2015-09-14 5 views
6

Utilizzo di Realm DB in un'applicazione rapida. Sto cercando di filtrare i risultati con un predicato come segue:La ricerca del predicato per oggetto di interesse non è valida

class func fetchUsersFromDB(usersId: [String]) -> [User]{ 
     var users = [User]() 
     let realm = Realm() 
     let predicate = NSPredicate(format: "objectId IN %@", argumentArray: usersId) 
     var allUsers = realm.objects(User).filter(predicate) 
     users = Array(allUsers) 
     return users 
    } 

Ma questo non verrà compilato. Ho ricevuto questo errore:

Terminating app due to uncaught exception 'Invalid value', reason: 'IN clause requires an array of items' 

Qualche idea su cosa sto facendo male?

+1

Deve essere compilato. Riceverai un'eccezione di run-time – Shripada

+1

Il numero di riga 377, in https://github.com/realm/realm-cocoa/blob/master/Realm/RLMQueryUtil.mm indica che non c'è supporto per Swift Array, non lo fanno confermare con NSFastEnumeration .. – Shripada

+0

C'è un altro modo? Devo eseguire il loop della mia query per ogni stringa dell'array? – denislexic

risposta

5

rimuovere l'etichetta argumentArray:, come con essa si sta chiamando l'inizializzatore sbagliato per NSPredicate:

let predicate = NSPredicate(format: "objectId IN %@", usersId)

+0

Nell'ultima versione di XCode, questo non funziona. Ho questo errore "argomento argomento mancante" argomentoArray: "in chiamata". Vedi lo stesso? – StackOverflower

0

Come di Swift 3, basta usare Array(usersId) invece di usersId.

Problemi correlati