프로그래밍 방식으로 코어 데이터 엔티티를 채우고 있습니다.코어 데이터 엔티티 작성 중의 정신 이상
나는이 같은 배열 : 형식 클래스 내부 엔티티
for (int i=0; i<[formats count]; i++) {
NSString *format = formats[i];
Format *oneFormat = [Format formatWithString:format inManagedObjectContext:managedObjectContext];
// ... bla bla
}
를 채울 이제
NSArray *formats = @[
@"6 x 5",
@"5.3 x 4.3",
@"4 x 3",
@"5 x 3.5",
...
나는 그것을 열거하고 나는
+ (Format *)formatWithString:(NSString *)string inManagedObjectContext:(NSManagedObjectContext *)context
{
Format *aFormat = nil;
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:NSStringFromClass([self class])
inManagedObjectContext:context];
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"(name == %@)", string];
이이 문제입니다 . for
루프 내부의 한 지점에서 그때
format = @"5.3 x 4.3"
을 가지고,이 라인은 format = @"5.3 x 4.3"
은 Format formatWithString
에 전달, 이론
Format *oneFormat = [Format formatWithString:format inManagedObjectContext:managedObjectContext];
실행됩니다.
Format formatWithString
은 @"4 x 3.5"
문자열을받습니다.
무엇이 ??? 방법은 @"5.3 x 4.3"
이고 @"4 x 3.5"
을 받습니까?
놀라운 부분이 있습니다. 만약 내가 po predicate
내가 볼
name == "5.3 x 4.3 cm"
그것은 올바른 값입니다. 그러나 기록이 저장되면 잘못된 값이 저장됩니다.
이 @"4 x 3.5"
은 이전 코드에서 사용했던 형식입니다. 오타였습니다. 내 코드에서이 형식의 모든 언급을 삭제했습니다. 10 번 확인했습니다. 더 이상 @"4 x 3.5"
은 없습니다.
파생 데이터를 모두 삭제했습니다. 데이터베이스를 생성 할 때마다 여기에 있어서는 안되는이 @"4 x 3.5"
항목이 들어 있습니다.
숨겨진 코어 데이터 캐시 또는 올바르게 생성 할 수있는 부분이 있습니까? 한 값으로 메소드를 호출하고 다른 값을 수신 할 수있는 방법은 무엇입니까?
# 2는 Format 클래스 내에서 변수 이름을 변경하는 아이디어를 제공하며 문제가 해결되었습니다. 감사. – SpaceDog