बंद करने के बाद खो रहे हैं यह मेरी समस्या का अवलोकन है:कुछ CoreData रिश्तों एप्लिकेशन
जोड़ा जा रहा है (और इस बात की पुष्टि वे जुड़ जाते हैं) 1400 रिश्तों CoreDat में एक साबुन सेवा से लोड के बारे में। ऐप बंद करने और इसे फिर से खोलने के बाद कुछ रिश्ते खो गए हैं; मैं केवल उनमें से 800 देखता हूं (हालांकि यह भिन्न होता है)। इसके अलावा, मुझे कोई त्रुटि नहीं मिल रही है।
और अब, अधिक जानकारी के:
मैंने किसी चीज़ User
बुलाया सेवाओं के लिए उपयोगकर्ता बचाया है के बारे में जानकारी है कि है, यह कुछ इस तरह दिखता है:
@interface OosUser : NSManagedObject
+ (OosUser *) userFromSlug: (NSString *) slug;
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *slug;
@property (nonatomic, retain) NSMutableSet /* Service */ *services;
- (void) addServicesObject: (Service *)service;
- (void) removeServicesObject: (Service *) service;
@end
@implementation User
@dynamic name;
@dynamic slug;
@dynamic services;
static NSString *fetchPredicate = @"slug = %@";
+ (User *) userFromSlug:(NSString *)slug
{
User *result = [super objectWithPredicate: fetchPredicate, slug];
if (!result) {
result = [super create];
result.slug = slug;
}
return result;
}
@end
कोड जहां डाटा प्रयोग किया जाता है के भाग में, रिश्तों इस तरह सहेजे जाते हैं:
NSMutableSet *userServices = self.user.services;
for (Service *service in servicesToAdd) {
[self.services addObject: service];
bool contained = false;
for (Service *userService in userServices) {
if ((contained = [userService.slug isEqualToString:service.slug])) {
break;
}
}
if (!contained) {
// [userServices addObject:service];
[self.user addServicesObject: service];
NSError *error = nil;
if (![[service managedObjectContext] save:&error]) {
NSLog(@"Saving failed");
NSLog(@"Error: %@", [error localizedDescription]);
}else {
NSLog(@"Registered service %d: %@", self.services.count, service.slug);
}
}
}
मामले है कि मैं के साथ की जाँच कर ली है डीबगर और मैं देख सकता हूं कि 1400 से अधिक रिलेशनशिप जोड़े गए हैं, लेकिन जब ऐप रीसेट हो जाता है और वे पुन: स्थापित होते हैं, हालांकि self.user.services मुझे केवल 800 ऑब्जेक्ट मिलते हैं।
यह क्यों हो सकता है? किसी के पास यह पहले था?
अग्रिम धन्यवाद।
अद्यतन:
लोग सुझाव है कि मैं कोर डेटा सही ढंग से उपयोग नहीं कर रहा है, लेकिन समस्या यह है कि डेटा एप्लिकेशन को पुन: प्रारंभ करने के बाद खत्म हो जाता है है रहते हैं। इसका उपयोग करते समय इसमें कोई समस्या नहीं है। मैं कोर डेटा को सही के रूप में उपयोग कर रहा हूं क्योंकि इसे ऐप्पल से प्राप्त सीमित दस्तावेज और उदाहरण दिए जा सकते हैं।
आप प्रत्येक पुनरावृत्ति पर संदर्भ को सहेजते हैं? क्यूं कर? और आप उपयोगकर्ता को सेवा ऑब्जेक्ट कहां जोड़ते हैं? –
मैं इसे पुनरावृत्ति के अंत में कर रहा था, लेकिन यह देखने के लिए ऐसा था कि क्या यह समस्या थी। मैं इसे 'userServices' में जोड़ता हूं जो उपयोगकर्ता से पुनर्प्राप्त एनएसएमयूटेबलसेट है। मैंने इसी तरह के परिणामों के साथ 'addServicesObject' का उपयोग करने का भी प्रयास किया है। – pablisco
Ì लगता है कि आपको यह गलत लगता है कि कोर डेटा कैसे काम करता है।आपको सबसे पहले डीबी ऑब्जेक्ट में डालना चाहिए और फिर इसे एडसर्विसेज ऑब्जेक्ट के साथ जोड़ें: उपयोगकर्ता के संबंध में या इसे सहायक सेट में जोड़ें और फिर उपयोगकर्ता से संबंधों को सेवाओं से जोड़ने के लिए सेट करें: (एनएसएसएटी *) मान; विधि –