SWIFT CoreData NSManagedObject

Posted

技术标签:

【中文标题】SWIFT CoreData NSManagedObject【英文标题】: 【发布时间】:2014-07-16 23:12:15 【问题描述】:

我有一个自定义 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

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

【问题讨论】:

【参考方案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 设为 NOT 可选,因为托管属性 title 是必需的。或者,您可以将 title 设为可选,但请确保您的模型已更新以反映此更改。

【讨论】:

【参考方案2】:

嗯。怎么样

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

【讨论】:

以上是关于SWIFT CoreData NSManagedObject的主要内容,如果未能解决你的问题,请参考以下文章

其他对象中未显示的对象属性

Core Data 获取关系对象

将 CoreData 保存到 iCloud (Swift)

Swift/IOS/CoreData:如何在自动生成的 CoreData 类中将 var 定义为枚举类型?

Swift 构建 CoreData,语义问题

Swift - 删除CoreData行[重复]