2016-09-28 9 views
5

रीयल के साथ डेटा पुनर्प्राप्त करते समय मूल्यों के साथ कक्षा कैसे वापस करें? मैं इस कोड का उपयोग करने की कोशिश कर रहा हूँ, लेकिन तेजी से 3 की अनुमति नहीं: इस प्रकार आप वास्तव में एक DataInfo वस्तु नहीं लौटा रही हैंकिसी संपत्ति के मूल्य के आधार पर एक एकल दायरे वस्तु को पुनर्प्राप्त करना

static func getInfoById(id: String) -> DataInfo { 
    let scope = DataInfo() 
    let realm = try! Realm() 
    scope = realm.objects(DataInfo.self).filter("IdInfo == %@", id) 
    return scope 
} 

उत्तर

10

आपका कोड realm.objects(DataInfo.self).filter("IdInfo == %@", id) एक Results<DataInfo> (DataInfo की फ़िल्टर संग्रह) देता है,। परिणाम से DataInfo प्राप्त करने के लिए आप scope.first! पर कॉल कर सकते हैं।

static func getInfoById(id: String) -> DataInfo { 
    let realm = try! Realm() 
    let scope = realm.objects(DataInfo.self).filter("IdInfo == %@", id) 
    return scope.first! 
} 

हालांकि, मैं बल unwrapping के बाद से वहाँ कोई आइटम नहीं मिला हो सकता है, और एक दुर्घटना में एक शून्य मूल्य परिणाम बल unwrapping सलाह नहीं देते। इस प्रकार आप इसके बजाय DataInfo? वापस कर सकते हैं।

static func getInfoById(id: String) -> DataInfo? { 
    let realm = try! Realm() 
    let scope = realm.objects(DataInfo.self).filter("IdInfo == %@", id) 
    return scope.first 
} 

वैकल्पिक रूप से, अगर आप स्पष्ट रूप से अपने क्षेत्र वस्तु उपवर्ग में कहा गया है IdInfo अपने प्राथमिक कुंजी है, आप realm.object(ofType: DataInfo.type, forPrimaryKey: id) बजाय उपयोग कर सकते हैं।

static func getInfoById(id: String) -> DataInfo? { 
    let realm = try! Realm() 
    return realm.object(ofType: DataInfo.self, forPrimaryKey: id) 
} 
+0

पिछले कोड से पता चलता है की उम्मीद प्रकार DataInfo लिए परिणाम प्रकार 'वस्तु? "कनवर्ट नहीं कर सकता, मैं! DataInfo के रूप में उपयोग पार्स करने के लिए कर सकते हैं? – user1801745

+0

मेरे बुरा, समारोह की वापसी प्रकार एक वैकल्पिक, यानी' DataInfo होना चाहिए? ' – chrisamanse

+0

ठीक है, अब प्रकट होता है: 'डेटा इन्फ्लो टाइप करें कोई सदस्य प्रकार नहीं है' ... मुझे लगता है कि 'DataInfo.self' – user1801745

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

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