2015-09-14 5 views
6

迅速なアプリケーションでレルム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

を取得しています。https://github.com/realm/realm-cocoa/blob/master/Realm/RLMQueryUtil.mmの行番号377は、Swift Arrayのサポートがないことを示しています。 NSFastEnumerationに確認してください。 – Shripada

+0

別の方法がありますか?配列内の各文字列に対してクエリをループする必要がありますか? – denislexic

答えて

5

あなたはNSPredicateの間違った初期化子呼んでいるそれと同じように、argumentArray:ラベルを削除:だけではなく、usersIdArray(usersId)を使用し、スウィフト3のよう

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

+0

最後のXCodeバージョンでは、これは機能しません。私はこのエラーがあります "argument label 'argumentArrayがありません:' in call"。あなたは同じものを見ますか? – StackOverflower

0

を。

関連する問題