2017-03-07 2 views
2

Ich versuche, eine IN-Klausel mit einem NSPredate zu verwenden. Ich erhalte die folgende Fehlermeldung:Swift Core Daten Prädikat IN Klausel

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

Hier den Code ist:

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() 

Irgendwelche Ideen, was das Problem ist?

+2

Entfernen Sie das Symbol 'argumentArray:'. Sie übergeben nur ein Argument an Ihr Prädikat (ein Array), nicht an ein Array von Argumenten. – dan

+0

Das hat funktioniert! Vielen Dank für deine Hilfe. –

Antwort

3

Sie zeigen nicht, wie Sie recentEmployeeIds definieren, aber unter der Annahme, seine etwas wie

let recentEmployeeIds:[Int] = ... 

dann müssen Sie die NSPredicate richtig init. Es gibt kein Etikett für argumentArray

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

Die Beseitigung des Arguments war die Lösung. Vielen Dank! –

+0

@BryanDeemer können Sie meine Antwort akzeptiert markieren? – dmorrow

Verwandte Themen