3

私は Core Data の初心者です。重複する値を更新したい。たとえば、私のテーブルは次のようになります

 id | Name
============
 1  | Joseph  
 2  | Fernandez  
 3  | Joseph
 4  | James

id 1 と 4 に対応する Joseph を「myName」に更新したいとします。これを更新しようとすると、4 行目のみが更新されます。どのドキュメントでもこれを行う方法が見つかりません。誰かが私に解決策を提案できますか?

もう 1 つの質問ですが、すべての名前の値を出力するにはどうすればよいですか?

4

3 に答える 3

2

レコードを更新する方法を知るには、ドキュメントを読む必要があります http://www.appcoda.com/core-data-tutorial-update-delete/

于 2013-09-19T10:52:36.107 に答える
1

ジェームズ、

サンプル コードを使用して、両方の質問にお答えします。

NSFetchRequest特定のオブジェクトを更新するには、述語でnew をセットアップする必要があり、 (タイプのNSManagedObject) オブジェクトを取得し、関心のある値を更新して、コンテキストを保存します。

たとえば、次のようになります。

NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"YourEntityName"];
// set the predicate (it's equal to set a WHERE SQL clause) filtering on the name for example
// use camel case notation if possible, so instead of Name use name (for this you have to changes your model, if you don't want to do it use Name)
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"name == %@", @"Joseph"]];

NSError* error = nil;
NSArray* results = [context executeFetchRequest:fetchRequest error:&error];
// do some error checking here...
for (NSManagedObject resultItem in results) {

    // use KVC (for example) to access your object properties
    [resultItem setValue:@"myName" forKey:@"name"];
}

// save your context here
// if you don't save, changes are not stored

印刷するには、新しい をセットアップし、 (タイプの)NSFetchRequestオブジェクトを取得してを使用する必要があります。NSManagedObjectNSLog

たとえば、次のようになります。

NSFetchRequest* fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"YourEntityName"];

NSError* error = nil;
NSArray* results = [context executeFetchRequest:fetchRequest error:&error];
// do some error checking here...
for (NSManagedObject resultItem in results) {

    NSLog(@"%@", [resultItem valueForKey:@"name"]);
}

PS私が提供したコードは非常に単純で、特定の値をチェックするために使用した述語name. これはエラーが発生しやすいため、モデルを変更し、使用する必要があるオブジェクトごとに一種のGUIDを使用します (id がそのためのものかどうかはわかりませんが、名前を別のものに変更しますuserId)。完了したら、それに対してチェックできます。

それが役立つことを願っています。

于 2012-09-06T08:11:26.713 に答える
0

プロパティを取得しNSManagedObjectて変更するのと同じくらい簡単です。fetch リクエストでName取得できます。NSManagedObjectプロパティを変更し、アプリケーションを閉じても変更を維持したい場合はsavemanagedObjectContext.

コア データについて 理解するには、ドキュメントを読む必要があります。 /doc/uid/TP40001650-TP1

編集:NSLogリクエスト結果を取得するログなど、知りたいことは何でも。

于 2012-09-06T07:28:12.510 に答える