2012-06-15 2 views
1

이전 응용 프로그램 버전에서 가지고 있던 모든 데이터에 액세스하기 위해 이미 핵심 데이터 마이그레이션을 수행했습니다. 쿠폰이라는 엔티티가 있고 해당 엔티티에 대한 여러 속성이 있습니다. 그러나 내 새 버전에서는 동일한 엔티티에 대해 하나의 특성 인 "username"이 있습니다. 이제 응용 프로그램을 시작할 때 이전 버전에 있던 모든 데이터를 가져와 사용자 이름으로 모두 저장해야합니다. 어떻게 내 데이터를 업데이트 할 수 있습니까? 모든 제안은 appreci.In 것입니다 나는 항상 사용자 이름을 기반으로 데이터를 가져 오는 중입니다.응용 프로그램을 업그레이드하면 이미 존재하는 핵심 데이터가 다시 사용됩니다

` NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    [request setEntity: [NSEntityDescription entityForName:@"Coupon" inManagedObjectContext: context]]; 

    NSPredicate *newPredicate= [NSPredicate predicateWithFormat:@"username = %@", username]; 
    [request setPredicate:newPredicate]; 


    NSArray *objects = [context executeFetchRequest:request error:&error]; 
    NSLog(@"%@arry",objects); 


    NSUInteger count = [context countForFetchRequest: request error: &error]; 
    [request release]; 

    if (count ==0) { 
} 

` 는 현재, 여기에 응용 프로그램 충돌은 내가 더 나은 솔루션에 필요한이 predicate.Anymore 세부 사항을 설정하기 전에 그 속성을 추가 할 필요가 같은 attribute.So이 없기 때문에?

답변

1

application:didFinishLaunchingWithOptions:에서 마이그레이션을 확인할 수 있습니다. 새 데이터 모델로 업그레이드 한 후 앱을 처음 시작하는 경우 먼저 username 속성을 추가하여 모든 레코드를 수정할 수 있습니다.

//first fetch all Cupons 
for (Coupon *c in fetchedObjects) { 
    c.username = whatever; 
} 
[self.managedObjectContext save:nil]; 
+0

감사합니다 mundi .. :) –

관련 문제