Skip to main content
Code samples

Common Errors & Solutions

Cannot find NCKit types after SPMโ€‹

Symptom: Cannot find 'NCKitModelLocator' in scope (or NCKitProcessor, etc.) even though import NCKit is present.

Cause: Xcode resolved an old package checkout. Use tag 1.1.1 and reset caches.

Fix:

  1. File โ†’ Add Package Dependencies โ†’ set NCKit to Exact Version 1.1.1

  2. File โ†’ Packages โ†’ Reset Package Caches

  3. File โ†’ Packages โ†’ Resolve Package Versions

  4. Product โ†’ Clean Build Folder (โ‡งโŒ˜K)

  5. Confirm the checkout exposes NCKitProcessor:

    grep NCKitProcessor ~/Library/Developer/Xcode/DerivedData/*/SourcePackages/checkouts/NCKit/NCKit.xcframework/ios-arm64/NCKit.framework/Modules/NCKit.swiftmodule/arm64-apple-ios.swiftinterface

NCKitError.missingModelโ€‹

Symptom: throw NCKitError.missingModel("NCKit_model.tar.gz")

Checklist:

  1. Framework embedding โ†’ Embed & Sign
  2. SPM cache โ€” Reset Package Caches
  3. CocoaPods โ€” pod deintegrate && pod install
  4. Clean derived data
  5. Intel Mac simulator โ€” Simulator guide

NCKitError.libraryInitโ€‹

Cause: df_create() returned nil. Often Intel Mac simulator without Rosetta.

Fix: Physical device or Rosetta simulator.

NCKitError.unsupportedFormatโ€‹

let asset = AVAsset(url: inputURL)
let tracks = try await asset.loadTracks(withMediaType: .audio)
print("Audio tracks: \(tracks.count)")

NCKitError.cannotCreateOutputโ€‹

let output = FileManager.default.temporaryDirectory
.appendingPathComponent(UUID().uuidString + ".wav")

Build Error: Missing required module 'CDeepFilter'โ€‹

Clean derived data; use prebuilt XCFramework, not source files.

Build Error: Simulator / device slice mismatchโ€‹

Confirm full NCKit.xcframework is embedded, not a single slice.

NCKitStreamProcessor missing reset()โ€‹

Symptom: reset() not available on NCKitStreamProcessor.

Fix: Upgrade to 1.1.1, reset package caches, clean build. reset() requires NCKit 1.1.1+.

Mic tap returns 0 Hzโ€‹

Ensure the AVAudioEngine graph is connected, microphone permission is granted, and the audio session is active before installing the tap.

Denoise blocks UIโ€‹

Run NCKitFileProcessor.processFile inside Task.detached (see How to Use).

Package download failsโ€‹

Add your GitHub account under Xcode โ†’ Settings โ†’ Accounts for private repo access.

Audio Sounds Robotic / Over-Processedโ€‹

let proc = try NCKitProcessor(modelURL: url, attenLimDb: 40)
proc.setAttenLim(40)
proc.setPostFilterBeta(0)