코어 데이터 오류 "data:"
다음 코드로 코어데이터에서 데이터를 추출하려고 합니다.
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>)"
)
내가 엔티티인 Cave.m에서 다음과 같은 변경을 하기 전까지는 잘 작동했습니다.
나는 MK 주석을 Cave.h에 대리인으로 추가하고 이 코드를 Cave.m에 추가했습니다.
- (CLLocationCoordinate2D)coordinate
{
CLLocationCoordinate2D location;
location.latitude = [self.latitude doubleValue];
location.longitude = [self.longitude doubleValue];
return location;
}
이것을 디버깅할 수 있는 방법이 있습니까?
이는 예상된 동작이므로 개체의 영구 값에 액세스해야 할 때까지 코어 데이터가 전체 개체를 반환하지 않습니다.이 시점까지 반환된 각 개체는 '고장'이 됩니다.
다음을 사용하여 가져오기 요청이 전체 개체를 반환하도록 강제할 수 있습니다.[request setReturnsObjectsAsFaults:NO]
하지만 대부분의 경우 당신이 가지고 있는 것은 괜찮을 것입니다.자세한 내용은 NSFetchRequest 설명서를 참조하십시오.
속성 중 하나에 액세스하면 코어 데이터가 영구 저장소로 이동하고 나머지 값을 가져오면 로그에 전체 설명이 표시됩니다.
이것은 너무나 흔한 오해인 것 같아서, 여기에 그것에 대해 쓰기로 결정했습니다.
CoreData에서 데이터를 가져오는 동안 동일한 문제에 직면했습니다! 그래서, 저는 Swift 3에서 @jrturton이 지시하고 실행한 방법을 따랐습니다.
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! }
희망합니다. 도움이 될 것입니다. :)
언급URL : https://stackoverflow.com/questions/7304257/coredata-error-data-fault
'source' 카테고리의 다른 글
항목이 "리소스" 매개 변수에 두 번 이상 지정되었습니다.중복 항목은 "리소스" 매개 변수에서 지원되지 않습니다. (0) | 2023.06.01 |
---|---|
TRUE 및 FALSE가 SUM() 내에서 작동하지 않습니다. (0) | 2023.06.01 |
Android Studio에서 "R 기호를 확인할 수 없음" (0) | 2023.06.01 |
ssh: 호스트 github.com 에 연결 포트 22: 연결 시간 초과 (0) | 2023.06.01 |
루비 온 레일즈: 어떻게 문자열을 HTML로 렌더링합니까? (0) | 2023.06.01 |