1

新しいオブジェクトを CoreData データストアに正しく追加する方法を知りたいです。次のコードは機能しますが、新しい NSString と新しい NSNumber を使用して値を設定する必要があることに少し驚いています。それに加えて、私のコードがメモリリークにつながるのではないかと心配しています。

let ed = NSEntityDescription.InsertNewObjectForEntityForName("Document", context)

ed.SetValueForKey(new NSString("title"), new NSString("title"))
ed.SetValueForKey(new NSString("file"), new NSString("file"))
ed.SetValueForKey(new NSString("base_name"), new NSString("base_name"))
ed.SetValueForKey(new NSNumber(123), new NSString("question_count"))
ed.SetValueForKey(new NSString("revision"), new NSString("revision"))
ed.SetValueForKey(new NSString("valid"), new NSString("valid"))

let error = context.Save()
4

1 に答える 1

0

それは漏れません。ガベージ コレクター (GC) は、作成されたインスタンスへの参照が存在しない場合 (たとえば、メソッド呼び出しの後)、作成されたインスタンスのメモリを再利用します。

OTOH より少ないコード (少なくとも C# を使用) でこれを行うことができます。

ed.SetValueForKey ((NSString) "title", (NSString) "title")

ed.SetValueForKey ((NSNumber) 123, (NSString) "question_count")

何が起こっているかを実際に変更するわけではないことに注意してください(ただし、私はその構文を好みます)。

于 2013-09-28T14:59:31.203 に答える