2016-09-15 8 views
9

के लिए कुंजी मान कोडिंग-अनुरूप नहीं है मुझे RestKit लाइब्रेरी और कोरडाटा के साथ एक आईओएस ऐप मिला है। Xcode8 के बाद से, मैं पहले से अधिक लॉग देख सकता हूं और उनमें से एक मुझे कोई समझ नहीं आता है।NSManageObjectContext - कुंजी कुंजी @count

error: An observer of NSManagedObjectContextDidSaveNotification illegally threw an exception. Objects saved = { 
inserted = "{(\n)}"; 
managedObjectContext = "<_PFWeakReference: 0x600000621560>"; 
updated = "{(\n ...)}"; 
} 
and exception = [<_PFWeakReference 0x600000621560> valueForUndefinedKey:]: this class is not key value coding-compliant for the key @count. with userInfo = { 
NSTargetObjectUserInfoKey = "<_PFWeakReference: 0x600000621560>"; 
NSUnknownUserInfoKey = "@count"; 

अब तक, क्या मैं समझ सकता हूँ कि (त्रुटि में ऊपर) managedObjectContext के लिए एक कमजोर संदर्भ एक गलत कुंजी उपयोग कर रहा है, लेकिन मैं समझ नहीं कर सकते कि यह कैसे डिबग करने के लिए है।

इस समस्या से संबंधित सभी एनएसएमएजेडऑब्जेक्ट संग्रह होने लगते हैं। एक OneToMany या ManyToMany रिश्ते से ज्यादातर NSSet।

तब मैं इस Apple documentation पाया:

सभी संग्रह ऑपरेटरों, @count के अपवाद के साथ, संग्रह ऑपरेटर के अधिकार के लिए एक महत्वपूर्ण मार्ग की आवश्यकता है।

हालांकि, मैं वर्तमान में इस कुंजी का उपयोग करने वाले किसी भी अनुमानित या कोरडाटा अनुरोध को नहीं देख सकता।

मैंने अपने सभी एनएसएमएनेज्ड ऑब्जेक्ट मॉडल को पुन: उत्पन्न किया और उनके बीच सभी व्यस्त संबंधों को दोबारा जांच लिया लेकिन इससे मुझे इससे छुटकारा पाने में मदद नहीं मिली।

यह ऐप ठीक चल रहा है लेकिन मुझे इस चेतावनी को हटाने के लिए कोई समाधान नहीं मिला।

+2

मुझे लगता है कि यह कुंजी नहीं बना रहा है लेकिन यह RKManagedObjectStore.m लाइन 55. – JulianM

+0

क्या आपको कभी भी इस चेतावनी से छुटकारा पाने का कोई तरीका मिला है? –

उत्तर

1

मुझे विश्वास है कि यह PR 2449 में तय किया गया था, जिसे development branch में विलय कर दिया गया है। उस पीआर में this commit है जो इस मुद्दे को हल करने के लिए सीम है।

मुझे यकीन नहीं है कि पीआर master शाखा में विलय कर दिया गया है, इसलिए सुनिश्चित नहीं है कि यह फली के माध्यम से उपलब्ध है या नहीं। लेकिन आप अपने पॉडफाइल में एक संस्करण के बजाए एक विशिष्ट प्रतिबद्धता निर्दिष्ट कर सकते हैं। तो आप इस निर्दिष्ट करते हैं:

pod 'RestKit', :git => 'https://github.com/RestKit/RestKit.git', :commit => '9cbba9eb1b490c3c5e2873c8fba8e9c0fec1bf07' 
के रूप में सुझाव here यह काम करना चाहिए

!

लेकिन शायद यह प्रतिबद्धता स्विफ्ट 3 के साथ संगत नहीं है, मुझे इसके बारे में निश्चित नहीं है। लेकिन हो सकता है कि आप स्विफ्ट 3 का उपयोग नहीं कर रहे हैं ...