6

ドキュメンテーションおよび幅広い文献では、IOS の CoreData でサブクラス化された管理対象オブジェクトを削除/削除するために生成されたファクトリ メソッドは次のとおりです。

(void)removeXXXObject:(NSManagedObject *)value

ここで、XXX は対応する関係であるか、単純に removeObject を使用できます。

私のコードでは、これを使用しました:

Data *lastData = [[self sortedPersonDatas] objectAtIndex:0];
[selectedPerson removePersonDatasObject:lastData];

ここで、PersonDatas は Data 管理対象オブジェクトとの 1 対多の関係です 最後のデータを取得しました (lastData は、すべてのデータの並べ替えられた配列から生成されたものです)。逆の関係がnullであるだけで、データは存在します。データ (すべての属性とオブジェクト) を完全に削除するには、次を使用する必要がありました。

[selectedPerson.managedObjectContext deleteObject:lastData];

質問: どちらがより良い方法で、CoreData がデータをそのまま残すのは正しいですか?

4

1 に答える 1

7

removeXXXObjectto-many関係からオブジェクトを削除するだけで、ストアからオブジェクトを削除しません。そのためには、実際に使用するdeleteObject必要があります。これが望ましい動作です。呼び出しdeleteObjectは、デフォルトで対応する関係もnilに設定します(https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html#//apple_ref/doc/uid/を参照) TP40001857-SW1)。

于 2012-11-21T14:10:23.180 に答える