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
(请参阅文档)。