Ios 具有Swift两个实体的核心数据

Ios 具有Swift两个实体的核心数据,ios,swift,core-data,Ios,Swift,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<JobDeta

我正在尝试使用核心数据来保存一些应用程序数据。我有以下课程。基本上,我希望存储每个作业的属性,并在以后使用它

下面是我当前在应用程序中使用的类

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
    }
}
下面是我的数据模型的截图

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

}

基本上,我希望在我的应用程序中对作业进行CRUD,以便在我的tableview中显示它们。我已经设置好了所有内容,但是因为我无法设置核心数据,所以我没有持久性。如果您能帮助我设置核心数据,我将不胜感激。

请参阅此。也许对你有用


从屏幕截图上看,您的设置似乎是正确的。将详细信息与这样的作业链接

detail1.parent = job
detail2.parent = job 
context.save(nil)
获取这样一份工作的所有细节

job.details
这是无序的,但您可以使用描述符对它们进行排序

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

同意Keyur的观点,你需要做一个基础教程。了解如何创建和保存对象。我可以创建和保存单个实体。但正如你们从我的例子中看到的,我有两个实体。AFAIK这是模拟阵列的唯一方法。链接教程仅讨论单个实体。另外,对于我的例子,订单或工作细节也很重要。谢谢回复。我有一个小问题,因为有时候日期是一样的,有没有办法根据它们添加的顺序对它们排序,或者我应该使用一些索引变量并设置它?另外,您编写的代码意味着我应该在数组中获取详细信息。我试图单独使用核心数据来在tableview中使用。基本上,我希望使用addDetail函数向核心数据添加详细信息,并使用详细信息获取作业名称以填充tableView。如果你能给我写一个简单的锅炉板代码或给我举个例子,我将不胜感激。再次感谢。抱歉,此平台不是用于获取锅炉板代码的。你得自己写。我提供的代码解决了您最初提出的问题。如果您对此感到困扰,我建议使用专门为在表视图中显示核心数据对象而构建的
nsfetchedresultscoontroller
(请参阅文档)。