SWIFT CoreData NSManagedObject

我有一个自定义NSManagedObject(在Swift中),看起来像这样

import UIKit import CoreData @objc(Item) class Item: NSManagedObject { @NSManaged var title:String func entityName() -> String{ println("Entity Name") let item = "Item" return item } func insertItemWithTitle (title: String? , managedObjectContext:NSManagedObjectContext) -> Item{ println(title) let item = NSEntityDescription.insertNewObjectForEntityForName(entityName(), inManagedObjectContext: managedObjectContext) as Item if title { item.title = title! } return item } 

}

什么是正确的方式来初始化这样的东西,并使用它

核心数据(Core Data)负责实例化(例如init ),因此build议您使用类工厂方法。 例如:

 @objc(Item) class Item: NSManagedObject { @NSManaged var title:String class func entityName() -> String { return "Item" } class func insertItemWithTitle(title: String, managedObjectContext:NSManagedObjectContext) -> Item { let item = NSEntityDescription.insertNewObjectForEntityForName(Item.entityName(), inManagedObjectContext: managedObjectContext) as! Item item.title = title return item } } 

您也可以使参数title不可选,因为托pipe属性title是必需的。 或者,您可以使title可选,但要确保您的模型已更新以反映此更改。

嗯。 怎么样

 var item = Item.insertItemWithTitle(title:"Item Title", context) item.entityName()