কোরেডাটা ত্রুটি "ডেটা: <ফল্ট>"


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]);

কোরডাটাতে 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>)"
)

আমি Cave.m যা সত্তা নিম্নলিখিত নিম্নলিখিত পরিবর্তন না করা পর্যন্ত এটি প্রাকৃতিকভাবে সূক্ষ্মভাবে কাজ করত

আমি কেভ.ইচ. তে একটি প্রতিনিধি হিসাবে এমকেঅনোটেশন যুক্ত করেছি এবং এই কোডটি কেভ.এম-এ যুক্ত করেছি

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

এটি ডিবাগ করার কোনও উপায় আছে?

উত্তর:


273

এটি প্রত্যাশিত আচরণ, মূল তথ্যগুলি সম্পূর্ণ অবজেক্টগুলিকে ফিরিয়ে দেবে না যতক্ষণ না আপনি অবজেক্টগুলির অবিচ্ছিন্ন মানগুলি অ্যাক্সেস করার প্রয়োজন হয়। আপনার ফিরে আসা প্রতিটি বস্তু এই বিন্দু অবধি 'দোষ' হয়ে থাকবে '

আপনি আনতে অনুরোধটি পুরো জিনিস ব্যবহার করে ফিরে আসতে বাধ্য করতে পারেন [request setReturnsObjectsAsFaults:NO]তবে বেশিরভাগ ক্ষেত্রে আপনার কাছে যা ঠিক আছে তা হবে। আরও তথ্যের জন্য এনএসফ্যাচআরকুয়েস্টের ডকুমেন্টেশনটি দেখুন।

আপনি যদি কোনও বৈশিষ্ট্যে অ্যাক্সেস করেন তবে মূল ডেটা অবিরাম স্টোরে যাবে এবং আপনার বাকী মানগুলি আনবে, তবে আপনি লগগুলিতে পুরো বিবরণ পাবেন।

এটি এমন একটি সাধারণ ভুল বোঝাবুঝি বলে মনে হচ্ছে যা আমি এখানে এটি নিয়ে লেখার সিদ্ধান্ত নিয়েছি ।


57
আপনি কল করে সম্পত্তিটি বন্ধ করতে পারেন [অনুরোধ সেটরেটর্নসঅবজেক্টসএফএল্টস: না];
কামার সুলাইমান

21
ফল্ট বিভ্রান্তিকর, তারা বলতে পারত 'ডেটা
আনেনি

1
ফল্ট কম্পিউটার বিজ্ঞানের আর্কিটেকচারে ব্যবহৃত একটি জেনেরিক কীওয়ার্ড
অভিষেক বেদী

@ অভিষেকবেদি না তা না। এটি একটি "বিশেষ" শব্দ যা বিশেষভাবে কোয়ার ডেটা ব্যবহার করে সাধারণত অভিধানের সংজ্ঞা থেকে আলাদা কিছু বোঝায়। নিশ্চিতভাবে নামকরণ খারাপ।
কারসন হলঝেইমার

4

কোরডাটা থেকে ডেটা টানতে গিয়ে আমি একই সমস্যার মুখোমুখি হয়েছি! সুতরাং, আমি জার্টার্টন যেভাবে নির্দেশনা দিয়েছি এবং সুইফট 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! 
}

আশা করি এটা তোমাকে সাহায্য করবে . :)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.