1

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

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

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

4

1 回答 1

1

application:didFinishLaunchingWithOptions:您可以检查迁移。如果是升级新数据模型后第一次启动,可以先修改所有记录,添加用户名属性。

//first fetch all Cupons
for (Coupon *c in fetchedObjects) {
   c.username = whatever;
}
[self.managedObjectContext save:nil];
于 2012-06-15T11:20:21.793 回答