核心数据与Swift两个实体

时间:2015-04-16 12:39:23

标签: ios swift core-data

我正在尝试使用Core Data来保存我的一些应用程序数据。我有以下课程。基本上我想存储每个作业的属性,稍后再使用它。

以下是我目前在我的申请中使用的课程。

class Job {
    var name:String?
    var count = 1
    var id:String
    var startDate:NSDate?
    var finishDate:NSDate?
    var expected:NSDate?
    var detail:Array<JobDetail> = []
    var isFinished:Bool?
    var sender:String?
    var receiver:String?

    init(name:String?, id:String) {
        self.name = name
        self.id = id
        self.isFinished = false
        self.startDate = NSDate()
    }

    func addDetail (message:String?, date:NSDate?, location:String?, status: DetailStatus) {
        detail.append(JobDetail(message: message, date: date, location: location, status: status))
        if status == DetailStatus.OK {
            self.isFinished = true
            self.finishDate = date
        }
    }

}


enum DetailStatus {
    case OK
    case Error
    case Exception
    case Unknown
}


class JobDetail {
    var message:String?
    var date:NSDate?
    var location:String?
    var status:DetailStatus

    init(message:String?, date:NSDate?, location:String?, status: DetailStatus) {
        self.message = message
        self.date = date
        self.location = location
        self.status = status
    }
}

我在创建数据模型后使用Xcode创建的NSManagedObject子类。

class Job: NSManagedObject {

    @NSManaged var name: String
    @NSManaged var count: NSNumber
    @NSManaged var id: String
    @NSManaged var startDate: NSDate
    @NSManaged var finishDate: NSDate
    @NSManaged var expected: NSDate
    @NSManaged var isFinished: NSNumber
    @NSManaged var sender: String
    @NSManaged var receiver: String
    @NSManaged var details: NSSet

}

class JobDetail: NSManagedObject {

    @NSManaged var message: String
    @NSManaged var date: NSDate
    @NSManaged var location: String
    @NSManaged var status: NSNumber
    @NSManaged var parent: Job

}

以下是我的数据模型的屏幕截图。

Job Job Detail 基本上我想在我的应用程序中使用CRUD Job,以便我可以在我的tableview中显示它们。我有一切设置,但因为我无法设置核心数据我没有持久性。如果您能帮助我设置Core Data,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

从截图中可以看出,您的设置是正确的。链接详细信息与这样的工作。

detail1.parent = job
detail2.parent = job 
context.save(nil)

获取此类工作的所有详细信息

job.details

这是无序的,但您可以使用sortedArrayUsingDescriptors对其进行排序。

let sortedDetails = job.details.sortedArrayUsingDescriptors(
  [NSSortDescriptor(key:"date" ascending: false)])