2012-09-16 2 views
0

iOS 앱의 핵심 데이터에 문제가 있습니다.가져 오기 후 NSManagedObjects의 동적 속성이 null입니다.

첫째, 내 ManagedObject에 대한 코드 :

@interface MyBook : NSManagedObject 
    @property (retain, nonatomic) NSString *book_name; 
@end 


@implementation MyBook  
    @synthesize book_name; 
@end 

그리고 코드 샘플 :

NSFetchRequest *fr = [NSFetchRequest fetchRequestWithEntityName:@"MyBook"]; 
fr.predicate = [NSPredicate predicateWithFormat:@"book_name == %@", @"Something"]; 

NSArray *result = [s.managedObjectContext executeFetchRequest:fr error:&error]; 

MyBook *book = nil; 
if (result.count) { 
    book = [result objectAtIndex:0]; 
    NSLog(@"Updating old book: %@", book); 
} else { 
    book = [NSEntityDescription insertNewObjectForEntityForName:@"Book" 
       inManagedObjectContext:s.managedObjectContext]; 
    NSLog(@"Creating new book"); 
    shelf.book_name = // some unique book name is set here 
} 

NSLog(@"result: %@", book.book_name); 

기본적으로 코드 ...

  • 시도 횟수에 책을 이름으로 찾아서 붙잡아 라.
  • 책이 아직없는 경우 책을 만들고 책 이름을 설정하십시오.
    • 그렇지 않으면 기존 책을 가져옵니다.

내가 겪고있어 이상한 것은이 책이 이미 존재하는 경우, 재산 book_name가 null이다. 객체가 생성 된 경우 book_name에는 전에 설정 한 문자열이 있습니다.

속성에 대한 액세스가 가져온 책 인스턴스에 오류를 일으키지 않는다고 생각합니다. 아마 [book valueForKey:@"book_name"]이 작동하고 그 후에도 속성이 채워진 것입니다.

무엇이 여기에 있습니까? 코어 데이터가 속성에 액세스하고 있음을 알게되고 투명하게 데이터를 내부적으로 잡아낼 것으로 기대합니다.

당신에게

답변

2

큰 으악 감사합니다!

이 원본 질문을 게시 한 직후 @dynamic 대신 @synthesize을 사용하고 있다는 것을 깨달았습니다.

그러나 다른 사람들이 나중에 이러한 영향을받는다면이 질문을 남겨 두겠습니다. :)