2015-09-14 102 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