2011-11-19 14 views
7

मैं एक जेसन फ़ाइल से डेटा लोड करता हूं, मैं इसे सहेजता हूं। मैं इसे दो बार करता हूं ... मुझे अपने कोर डेटा स्क्लाइट डेटाबेस में दो प्रविष्टियां मिलीं। भले ही मैं प्राथमिकKeyAttribute मैपिंग में सेट करता हूं।RestKit प्राथमिक कुंजी विशेषता

mapping.primaryKeyAttribute = @"code"; 
    [mapping mapAttributesFromArray :mappedFields]; 
    [[RKObjectManager sharedManager].mappingProvider setMapping:mapping forKeyPath:entityName]; 

मेरे Json

{ "MyEntity": [{ "कोड": "axv2" "डेटा": "सामग्री"}]};

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects { 

    NSLog(@"Entries loaded %d",[objects count]); 
    lastResult = objects; 

    for(MyEntity * myEntity in lastResult) {  
     [self saveContext];  
    } 
} 

मेरे इकाई सही ढंग से मैप किया गया है ... लेकिन Restkit एक ही प्राथमिक कुंजी के साथ डुप्लिकेट प्रविष्टियों को बचाने के लिए अनुमति देते हैं:

यहाँ कॉलबैक

?

यह अजीब बात है, मुझे समझ में आया कि यह प्राथमिक कुंजी विशेषता इस समस्या से बच जाएगी।

उत्तर

1

नवीनतम RESTKit संस्करण (0.23.2) आप इस तरह प्राथमिक कुंजी परिभाषित कर सकते हैं के रूप में:

[_mapping addAttributeMappingsFromDictionary:@{ @"id" : @"objectId", @"name" : @"name" }]; 
[_mapping setIdentificationAttributes:@[ @"objectId" ]]; 

जबकि objectId आप कोर डेटा वस्तु पर प्राथमिक कुंजी है।

1

नहीं, ऐसा नहीं है, क्योंकि कोर डेटा अपनी कुंजी रखता है। आप इस समस्या को आसानी से हल कर सकते हैं कि क्या आपकी प्राथमिक कुंजी मौजूद है और इकाई उदाहरण को प्रश्न में सहेजने से पहले।

+0

इसका मतलब है कि हर बार जब मैं संदर्भ को सहेजना चाहता हूं, तो मुझे यह प्रबंधित करने के लिए प्रबंधित संदर्भ की प्रत्येक इकाई पर लूप होना चाहिए कि यह इकाई एसक्लाइट डीबी में मौजूद है या नहीं? Restkit कुछ प्रदान नहीं करता है? या कोर डेटा? – Sam

+1

असल में, हाँ। या, एक नया आइटम बनाने से पहले, इसे डेटाबेस से लाएं। यदि fetch खाली वापस आता है, इसे बनाएं, अन्यथा इसे प्रबंधित ऑब्जेक्ट संदर्भ में भी डालें। मैंने इसे इस तरह से किया और यह काफी कुशल है। – Mundi

+1

मुझे डुप्लिकेशंस के साथ एक ही समस्या है, हालांकि Restkit डेटाबेस में डालने से पहले एक चेक प्रदान करता है, लेकिन ऐसा लगता है कि किसी कारण से मुझे (और आप) कॉल नहीं करना है। जांचें कि जब तक मुझे सही उत्तर नहीं मिलता है, तब तक मैं अस्थायी रूप से "हल" कैसे करता हूं http://stackoverflow.com/questions/7799890/primarykeyattribute-not-working-restkit-core-data – mateusmaso

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