2015-06-03 6 views
28

मैं स्विफ्ट के साथ संयोजन में रियलम (0.92) को बिल्कुल प्यार करता हूं लेकिन डेटाबेस से ऑब्जेक्ट पढ़ने के बारे में कोई प्रश्न पूछता हूं। मेरा लक्ष्य एक ज्ञात, अद्वितीय आईडी (जो प्राथमिक कुंजी भी होता है) के साथ एक एकल वस्तु को पुनर्प्राप्त करना है।रीयल डेटाबेस से एक ऑब्जेक्ट पुनर्प्राप्त करने का सही तरीका

सभी दस्तावेज फ़िल्टर किए जाने वाले एकाधिक ऑब्जेक्ट्स के लिए क्वेरी के आसपास उन्मुख होते हैं। इस मामले में मुझे पता है वस्तु आईडी और है, क्योंकि यह अद्वितीय माना जाता है, यह सीधे पुनः प्राप्त करना चाहते

मेरे वर्तमान दृष्टिकोण इस प्रकार है:।।

Realm().objects(Book).filter("id == %@", prevBook.nextID).first 

यह लगता है भारी हाथ पहले के संस्करण से प्रलेखन कि सुझाव है एक और सीधा तरीका है लेकिन मुझे प्रलेखन में इसका पता लगाना प्रतीत नहीं होता है।

मेरे वर्तमान दृष्टिकोण के साथ समस्या यह है कि निम्नलिखित समारोह पर एक अपवाद के साथ क्रैश हो रहा है:

public func filter(predicateFormat: String, _ args: CVarArgType...) -> Results<T> 

अपवाद रहस्यमय तरीके से रिपोर्ट किया गया है के रूप में:

EXC_BAD_ACCESS (कोड = 1, पता = 0xedf)

कोई सुझाव बहुत स्वागत है।

पूछताछ की एक पंक्ति की आशा: Realm().object(ofType: Book.self, forPrimaryKey: prevBook.nextId): मैं पुष्टि की है कि एक जाना जाता है, अच्छा आईडी के साथ prevBook.nextID की जगह समस्या

+0

आईओएस में दायरे का उपयोग करने का कोई कारण नहीं है। यह हर कल्पनीय तरीके से CoreData से कम है। – RunLoop

उत्तर

51

object(ofType:forPrimaryKey:) समाधान नहीं करता है कि आप क्या ढूंढ रहे हैं। filter().first से कोई आसान तरीका नहीं है यदि आपको प्राथमिक कुंजी के अलावा किसी अन्य चीज़ से वस्तु की खोज करने की आवश्यकता है।

+1

धन्यवाद, बिल्कुल वही जो मैं खोज रहा था। मुझे इसे ऑब्जेक्ट के साथ कॉल करना था फॉरप्रिमरीकी (बुक.ल्फ, की: prevBook.nextID) – Andy

+1

जावा (एंड्रॉइड) के बराबर क्या है? – mm2001

+1

... और जावास्क्रिप्ट (प्रतिक्रिया मूल) के बराबर क्या है? –

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