我有一个自定义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
}
}
什么是初始化这样的东西并使用它的正确方法
答案 0 :(得分:1)
实例化(例如init
)由Core Data处理,因此建议您使用类工厂方法。例如:
@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
不可选,因为需要托管属性title
。或者,您可以选择title
,但请确保更新模型以反映此更改。
答案 1 :(得分:0)
嗯。 <怎么样
var item = Item.insertItemWithTitle(title:"Item Title", context)
item.entityName()