2017-03-07 23 views
2

NSPredicateでIN句を使用しようとしています。私は次のエラーを取得しています:Swiftコアデータ述語IN句

let fetchRequest: NSFetchRequest<Employee> = NSFetchRequest(entityName: "Employee") 

fetchRequest.sortDescriptors = [ 
    NSSortDescriptor.init(key: "lastName", ascending: true) 
] 

fetchRequest.predicate = NSPredicate(format: "ANY id IN %@", argumentArray: recentEmployeeIds) 

fetchedResultsController = NSFetchedResultsController.init(fetchRequest: fetchRequest, 
                      managedObjectContext: FLCoreDataController.shared.mainObjectContext, 
                      sectionNameKeyPath: nil, 
                      cacheName: nil) 
fetchedResultsController?.delegate = self 

try? fetchedResultsController?.performFetch() 

すべてのアイデア、問題が何であるかのように:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSTaggedPointerString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0xa000000000000611'

ここでは、コードですか?

+2

「argumentArray:」ラベルを削除してください。あなたは引数の配列ではなく、あなたの述語(配列)に1つの引数を渡すだけです。 – dan

+0

これはうまくいった!手伝ってくれてどうもありがとう。 –

答えて

3

あなたはrecentEmployeeIdsを定義するが、その後、あなたは正しくNSPredicateを初期化する必要が

let recentEmployeeIds:[Int] = ... 

のようなその何かを想定しているか表示されません。 argumentArray

fetchRequest.predicate = NSPredicate(format: "ANY id IN %@", recentEmployeeIds) 
+0

引数を削除するのが解決策でした。本当にありがとう! –

+0

@BryanDeemerあなたは私の答えを受け入れることができますか? – dmorrow

関連する問題