2015-09-14 4 views
6

एक त्वरित एप्लिकेशन में दायरे डीबी का उपयोग करना। मैं परिणामों को एक अनुमान के साथ फ़िल्टर करने की कोशिश कर रहा हूं:रीयल ऑब्जेक्ट अनुमानित खोज अमान्य है

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 इंगित करता है, स्विफ्ट ऐरे के लिए कोई समर्थन नहीं है, वे नहीं करते हैं NSFastEnumeration की पुष्टि करें .. – Shripada

+0

क्या कोई और तरीका है? क्या मुझे सरणी में प्रत्येक स्ट्रिंग के लिए अपनी क्वेरी लूप करनी चाहिए? – denislexic

उत्तर

5

, argumentArray: लेबल निकालें इसके साथ के रूप में आप NSPredicate के लिए गलत प्रारंभकर्ता कॉल कर रहे हैं:

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

+0

अंतिम एक्सकोड संस्करण में, यह काम नहीं करता है। मुझे यह त्रुटि है "गुम तर्क लेबल 'तर्कअरे:' कॉल में '। क्या आप वही देखते हैं? – StackOverflower

0

स्विफ्ट 3 के रूप में, बस Array(usersId) बजाय usersId का उपयोग करें।

संबंधित मुद्दे