0

アプリケーションの 1 つにコア データがあります。すべてのデータはサーバーから読み込まれます。ある時点で、サーバーからのデータがコア データに既に存在するかどうかを確認する必要があります。すでに存在する場合は、チェックは、各エントリに対して持っている一意の値で行うことができます。どうすればこれを達成できますか? これは私がやったことです:

` for(int i=0;i<[ar count];i++){
            NSFetchRequest * request = [[NSFetchRequest alloc] init];
         NSManagedObjectContext *context=[Server serverInfo].context;

            [request setEntity:[NSEntityDescription entityForName:@"Coupon" inManagedObjectContext:context]];
            [request setPredicate:[NSPredicate predicateWithFormat:@"upc_code = %@",[ [ar objectAtIndex:i]objectForKey:@"upc_code"]]];
            NSUInteger count = [context countForFetchRequest:request error:nil];
            [request release];
          //  [context ]

        if (count > 0){
            NSLog(@"found");}'

ここで ar は、サーバーからフェッチする配列です。コンテキストは、ユーザーがサーバーからのエントリを編集できる場合があるということです。サーバー内のすべてのデータをデバイスと同期する必要があります。

4

1 に答える 1

1

結果を含む配列を返すcountForFetchRequest代わりに、a を実行しないでください。executeFetchRequest:error:この配列には 0 または 1 つの結果が含まれている必要があります。1 つを超えると一貫性がなくなります。これは、あなたupc_codeが一意であると想定しているためです。

結果が 0 件の場合は、コンテキストで新しいオブジェクトを作成し、そのプロパティを設定します

結果が 1 つある場合は、executeFetchRequest:error によって返されたそのオブジェクトのプロパティを更新するだけです。

最後に、コンテキストを保存して完了です

于 2012-05-25T06:25:56.137 に答える