升级应用程序是否会重用已存在的核心数据

时间:2012-06-15 10:25:53

标签: iphone objective-c xcode core-data

我已经完成了核心数据迁移,以访问我在我的应用程序的先前版本中拥有的所有数据。有一个名为coupon的实体,并且该实体具有多个属性。但在我的新版本中,我还有一个属性,同一实体的“用户名”。现在,在app的启动时,我必须获取我在旧版本中拥有的所有数据,并且必须使用用户名保存所有数据。如何更新我的数据?任何建议都将受到赞赏。在这个版本中,我总是根据用户名获取数据。

`  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) {
}

` 目前,应用程序崩溃,因为它没有这样的属性。所以我必须在设置这个谓词之前添加该属性。更好的解决方案需要更多细节吗?

1 个答案:

答案 0 :(得分:1)

application:didFinishLaunchingWithOptions:中,您可以检查迁移。如果这是使用新数据模型升级后第一次启动应用程序,则可以先添加username属性来修改所有记录。

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