Coredata त्रुटि "डेटा: <गलती>"


107

मैं निम्नलिखित कोड के साथ कोरडेटा से डेटा खींचने का प्रयास करता हूं

NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"Cave" inManagedObjectContext:self.context];
request.predicate = [NSPredicate predicateWithFormat:@"(latitude > 0) AND (longitude > 0)"];

NSError *error;
NSLog(@"%@",[self.context executeFetchRequest:request error:&error]);
NSLog(@"%@",[error localizedDescription]);

CoreData में 9 मिलान वाली वस्तुएँ होनी चाहिए और यह 9 वस्तुओं को ढूँढती है। तो विधेय काम करना चाहिए लेकिन मुझे यह सांत्वना में मिलता है

2011-09-05 07:41:42.267 CaveConditions[6930:11903] (
    "<NSManagedObject: 0x7368060> (entity: Cave; id: 0x7367880 <x-coredata://C825FC9D-3490-4D8A-A811-979B819A2EB6/Cave/p31> ; data: <fault>)",
    "<NSManagedObject: 0x73547e0> (entity: Cave; id: 0x7356e20 <x-coredata://C825FC9D-3490-4D8A-A811-979B819A2EB6/Cave/p40> ; data: <fault>)",
    "<NSManagedObject: 0x73681e0> (entity: Cave; id: 0x7363e60 <x-coredata://C825FC9D-3490-4D8A-A811-979B819A2EB6/Cave/p42> ; data: <fault>)",
    "<NSManagedObject: 0x7368280> (entity: Cave; id: 0x7356be0 <x-coredata://C825FC9D-3490-4D8A-A811-979B819A2EB6/Cave/p72> ; data: <fault>)",
    "<NSManagedObject: 0x7368320> (entity: Cave; id: 0x733ad80 <x-coredata://C825FC9D-3490-4D8A-A811-979B819A2EB6/Cave/p73> ; data: <fault>)",
    "<NSManagedObject: 0x73683c0> (entity: Cave; id: 0x7333e70 <x-coredata://C825FC9D-3490-4D8A-A811-979B819A2EB6/Cave/p91> ; data: <fault>)",
    "<NSManagedObject: 0x7368480> (entity: Cave; id: 0x7361810 <x-coredata://C825FC9D-3490-4D8A-A811-979B819A2EB6/Cave/p101> ; data: <fault>)",
    "<NSManagedObject: 0x7368570> (entity: Cave; id: 0x7360110 <x-coredata://C825FC9D-3490-4D8A-A811-979B819A2EB6/Cave/p105> ; data: <fault>)",
    "<NSManagedObject: 0x7368610> (entity: Cave; id: 0x73303c0 <x-coredata://C825FC9D-3490-4D8A-A811-979B819A2EB6/Cave/p112> ; data: <fault>)"
)

जब तक मैंने गुफा में निम्नलिखित परिवर्तन नहीं किया, तब तक यह पूरी तरह से ठीक काम करता था

मैंने गुफा में एक प्रतिनिधि के रूप में MKAnnotation को जोड़ा और C.m.m में इस कोड को जोड़ा

- (CLLocationCoordinate2D)coordinate
{
    CLLocationCoordinate2D location;
    location.latitude = [self.latitude doubleValue];
    location.longitude = [self.longitude doubleValue];
    return location;
}

क्या यह डिबग करने का एक तरीका है?

जवाबों:


273

यह अपेक्षित व्यवहार है, जब तक आपको वस्तुओं के लगातार मूल्यों तक पहुंचने की आवश्यकता नहीं होती है तब तक कोर डेटा पूर्ण ऑब्जेक्ट नहीं लौटाएगा। आपकी प्रत्येक लौटाई गई वस्तु इस बिंदु तक एक 'दोष' होगी।

आप भ्रूण के अनुरोध का उपयोग करके पूर्ण वस्तुओं को वापस करने के लिए मजबूर कर सकते हैं [request setReturnsObjectsAsFaults:NO], लेकिन ज्यादातर मामलों में आपके पास जो ठीक होगा वह होगा। अधिक जानकारी के लिए NSFetchRequest के दस्तावेज़ देखें।

यदि आप गुणों में से एक का उपयोग करते हैं, तो कोर डेटा लगातार स्टोर में जाएगा और आपके बाकी मूल्यों को प्राप्त करेगा, फिर आपको लॉग में पूर्ण विवरण मिलेगा।

यह एक ऐसी गलतफहमी है कि मैंने इसके बारे में, यहाँ लिखने का फैसला किया है


57
आप कॉल करके संपत्ति को बंद कर सकते हैं [अनुरोध setReturnsObjectsAsFaults: NO];
क़मर सुलेमान

21
दोष भ्रामक है, वे कह सकते हैं कि 'डेटा नहीं मिला' या कुछ और
क्रिस्टी ब्रालुओ

1
फॉल्ट कंप्यूटर साइंस आर्किटेक्चर में उपयोग किया जाने वाला एक सामान्य कीवर्ड है
अभिषेक बेदी

@AbhishekBedi नहीं यह नहीं है। यह एक "विशेष" शब्द है जिसका उपयोग विशेष रूप से कोर डेटा द्वारा सामान्य शब्दकोश की परिभाषा से कुछ अलग करने के लिए किया जाता है। यकीन के लिए बुरा नामकरण।
कार्सन होल्जाइमर

4

CoreData से डेटा खींचते समय मुझे उसी समस्या का सामना करना पड़ा! इसलिए, मैंने @jrturton को स्विफ्ट 3 में इसे लागू करने के तरीके का पालन किया :

चरण 1: जोड़ें import CoreData

चरण 2: नीचे दिया गया कोड जोड़ें। ।

let context = ( UIApplication.shared.delegate as! AppDelegate ).persistentContainer.viewContext
var request = NSFetchRequest<NSFetchRequestResult>()
request = Your_Entity_Name.fetchRequest()
request.returnsObjectsAsFaults = false
do {
    let arrayOfData = try context.fetch(request)
} catch {
    // Handle the error! 
}

आशा है इससे आपकी मदद होगी । :)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.