SWIFT CoreData NSManagedObject

时间:2014-07-16 23:12:16

标签: ios core-data 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
}

}

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

2 个答案:

答案 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()