1

以前のバージョンのアプリケーションにあったすべてのデータにアクセスするためのコア データの移行は既に完了しています。クーポンという名前のエンティティがあり、そのエンティティにいくつかの属性があります。しかし、新しいバージョンでは、もう 1 つの属性「ユーザー名」があります。アプリの起動時に、古いバージョンにあったすべてのデータを取得し、すべてをユーザー名で保存する必要があります。データを更新するにはどうすればよいですか?何か提案をいただければ幸いです。バージョン私は常にユーザー名に基づいてデータを取得しています。

`  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 に答える