2015-09-14 99 views
6

在swift應用程序中使用Realm DB。我試圖用謂詞過濾結果,如下所示:領域對象謂詞搜索無效

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 
    } 

但是這不會編譯。我得到這個錯誤:

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

任何想法我做錯了什麼?

+1

它必須編譯。你得到一個運行時異常 – Shripada

+1

行號377,在https://github.com/realm/realm-cocoa/blob/master/Realm/RLMQueryUtil.mm表示,沒有支持的Swift數組,他們不確認到NSFastEnumeration .. – Shripada

+0

有沒有另一種方法?我應該循環查詢數組中的每個字符串嗎? – denislexic

回答

5

取出argumentArray:標記時,用它你要求NSPredicate錯誤的初始化:

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

+0

在上一個XCode版本中,這不起作用。我有這個錯誤「缺少參數標籤」argumentArray:「在調用中」。你看到一樣嗎? – StackOverflower

0

隨着斯威夫特3的,只是使用Array(usersId)代替usersId