将升级应用程序重用已存在的核心数据
问题描述:
我已经完成了核心数据迁移,以访问我的应用程序的先前版本中的所有数据。拥有一个名为优惠券的实体并具有该实体的几个属性。但在我的新版本中,我有一个属性,“用户名”为同一个实体。现在应用程序启动时,我必须获取我在旧版本中的所有数据,并且必须使用用户名保存所有数据。如何我可以更新我的数据吗?任何建议将不胜感激。在这个版本中,我总是根据用户名获取数据。将升级应用程序重用已存在的核心数据
` 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) {
}
` 目前,这里的应用程序崩溃,因为它不具备这样的attribute.So我有设置需要一个更好的解决这个predicate.Anymore细节之前添加属性?
答
在application:didFinishLaunchingWithOptions:
您可以检查迁移。如果这是在使用新数据模型升级后第一次启动应用程序,则可以先通过添加用户名属性来修改所有记录。
//first fetch all Cupons
for (Coupon *c in fetchedObjects) {
c.username = whatever;
}
[self.managedObjectContext save:nil];
谢谢mundi .. :) –