ऐप्पल के documentation on -setPrimitiveValue:forKey:
कई तरीकों से अस्पष्ट है ताकि कई रिश्तों को प्रबंधित करने के लिए इसका उपयोग किया जा सके।setPrimitiveValue: forKey: और कई रिश्तों
पहले वे राज्य:
आप एक नया NSMutableSet ऑब्जेक्ट में एक से-अनेक संबंध स्थापित करने के लिए प्रयास करते हैं तो यह (अंततः) असफल हो जायेगी।
आखिरकार ?! इसका क्या अर्थ है? क्या यह -[NSManagedObjectContext save:]
के दौरान बाद में विफल हो जाएगा? जब एक प्रबंधित ऑब्जेक्ट को गलती में बदल दिया जाता है और फिर वापस पेज किया जाता है? कब? क्या मैं लगातार मांग में विफलता को फिर से बनाने के लिए एक टेस्ट केस लिख सकता हूं?
दूसरा, नमूना कोड उपलब्ध कराने के सही ढंग से इस मामले को संभालने के लिए, वे लिखते हैं:
पहले
primitiveValueForKey:
का उपयोग कर (विधि सुनिश्चितnil
वापस नहीं करता है)
मुझे क्या करना चाहिए मौजूदा सेट प्राप्त अगर/0 विधि वापसी शून्य है? assert()
यह और तुरंत विफल हो गया क्योंकि इसका मतलब है कि संपूर्ण ऑब्जेक्ट ग्राफ़ दूषित हो गया है और बचत डेटा हानि का कारण बन जाएगी? कॉलर को चेतावनी के रूप में NSAssert()
पर दबाएं लेकिन (चुपचाप कुछ भी नहीं कर रहा है) दबाएं?
अभी मैं बस सीधे बताए कर रहा हूँ मेरी वांछित उस मामले में NS[Mutable]Set
, इसलिए जैसे:
- (void)setChildren:(NSSet*)value_ {
NSMutableSet *mutableRelationshipSet = [[[self primitiveValueForKey:@"children"] mutableCopy] autorelease];
if (mutableRelationshipSet) {
[mutableRelationshipSet setSet:value_];
[self setPrimitiveValue:mutableRelationshipSet forKey:@"children"];
} else {
[self setPrimitiveValue:value_ forKey:@"children"];
}
}
कि गलत है?