如何在MonoTouch上使用F#正确添加新实体

时间:2013-09-28 08:19:35

标签: core-data f# xamarin.ios

我想知道如何正确地将新对象添加到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()

1 个答案:

答案 0 :(得分:0)

那不会泄漏。当没有对它们的引用时(例如在方法调用之后),垃圾收集器(GC)将回收所创建实例的内存。

OTOH你可以用更少的代码(至少使用C#)来做到这一点,例如

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

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

请注意,它并没有真正改变正在发生的事情(但我更喜欢这种语法)。