2014-07-30 8 views
10

रिश्ता गलती

मैं अपने प्रोजेक्ट में दो संस्थाओं है (तेज/Xcode बीटा 3 का उपयोग करते हुए) - जो अपने बच्चों के साथ एक एक-से-कई संबंध नहीं है एक मूल इकाई। संदर्भ सहेजने से पहले नई वस्तुओं को जोड़ते समय, सब कुछ ठीक काम करता है। हालांकि, ऐप को पुनरारंभ करने और फिर मूल ऑब्जेक्ट लाने के बाद मुझे अपने सभी बच्चों के लिए 'रिलेशनशिप गलती' मिल रही है।

func saveContext() { 
    var error: NSError? = nil 
    let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate 
    let context = appDel.managedObjectContext 

    if context == nil { 
     return 
    } 
    if !context.hasChanges { 
     return 
    } 
    if context.save(&error) { 
     return 
    } 

    println("Error saving context: \(error?.localizedDescription)\n\(error?.userInfo)") 
    abort() 
} 

मैं सच includesSubentities = बदलते और setReturnsObjectsAsFaults = false की कोशिश की, लेकिन यह मदद करने के लिए प्रतीत नहीं होता है: यह कैसे मैं अपने संदर्भ बचत कर रहा हूँ है। ऑब्जेक्टिव-सी के साथ 'रिलेशनशिप गलती' समस्या का अधिकांश जवाब सेट रिलेक्शनकेपैथ्सफोरप्रैचिंग का उपयोग करना प्रतीत होता है लेकिन स्विफ्ट में NSFetchRequest के साथ इसका उपयोग करना असंभव प्रतीत होता है।

क्या मुझे कुछ याद आ रही है?

+0

रिलेशनशिप गलती ठीक है। मूल डेटा की अवधि में गलती असली वस्तु नहीं है। यह अभी तक एहसास नहीं हुआ है, इसलिए जब आप गुणों तक पहुंचने का प्रयास करते हैं, तो यह लगातार स्टोर से जाता है और इसलिए वस्तु बढ़ जाती है। – Sandeep

+0

अरे, उत्तर के लिए धन्यवाद। दुर्भाग्य से मैं उन बच्चों की वस्तुओं को लाने और उन्हें आसानी से एक्सेस नहीं कर पा रहा हूं। –

+0

कृपया कोड दिखाएं कि आप माता-पिता और उसके बच्चे की वस्तुओं को कैसे प्राप्त करने का प्रयास करते हैं। – zisoft

उत्तर

2

जेनरेटरऑफोन कहते हैं, गलती का मतलब है कि वस्तु अभी तक स्मृति में नहीं लाई गई है। और आप सही हैं कि आप "उन बच्चों की वस्तुओं को लाने के लिए नहीं मिल सकते हैं और उन्हें आसानी से एक्सेस नहीं करते हैं।" ऑब्जेक्ट को लाने के लिए, आपको ऑब्जेक्ट की संपत्ति का मूल्यांकन करना होगा, यानी, वास्तव में ऑब्जेक्ट से एक मान का उपयोग करें।

0

यह सामान्य है। जब तक आप ऑब्जेक्ट का उपयोग नहीं करते हैं, तब तक यह आपको गलती का मुद्दा देता है, जब तक आप इसका उपयोग नहीं करते हैं, तब तक स्मृति में लोड करना चाहते हैं

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