【发布时间】:2014-08-27 13:07:10
【问题描述】:
我有一个关于如何在 Core Data 中创建 2 个 NSObject 之间的关系的问题。
首先我有这个 CoreData 结构。
文件和表单之间存在关系。一个表格可以有多个文件,但一个文件只能有一个表格。
我只用 Swift 创建了 NSObjects(所以没有桥接头) - 现在有 2 个核心数据 NSObject 类:
class Forms: NSManagedObject {
@NSManaged var uuid: String
@NSManaged var damagenumber: String
@NSManaged var internalnumber: String
@NSManaged var date: NSDate
@NSManaged var name: String
@NSManaged var street: String
@NSManaged var postalcode: String
@NSManaged var city: String
@NSManaged var country: String
@NSManaged var templateJSON: String
@NSManaged var formname: String
@NSManaged var files: NSSet
}
class Files: NSManagedObject {
@NSManaged var url: String
@NSManaged var forms: Forms
}
我的文件作为 NSSet 在这里。
所以,我想例如添加一个包含 5 个文件的表单。所以从这样的开始:
var request = NSFetchRequest(entityName: "Forms")
request.returnsObjectsAsFaults = false;
let newFormObject = NSEntityDescription.insertNewObjectForEntityForName("Forms", inManagedObjectContext: context) as Forms
newFormObject.setValue(uuid, forKey: "uuid")
......
// 插入文件
for index in 0...4 {
var request = NSFetchRequest(entityName: "Files")
request.returnsObjectsAsFaults = false;
let newFileObject = NSEntityDescription.insertNewObjectForEntityForName("Files", inManagedObjectContext: context) as Files
newFileObject.setValue(arrFiles[index], forKey: "url")
}
好的,一切正常。但是:我如何连接这 2 个对象?如果您使用 Obj-C NSObjects 而不是 Swift,我有一些方法可以将文件添加到表单。但是我怎样才能只在 Swift 中做到这一点呢?
如果我有关系 - 我如何从某个表单中读取所有文件对象?
编辑:
我现在改行了:
@NSManaged var files: NSSet
到
@NSManaged var files: [Files]
并在循环中使用:
newFormObject.files.append(newFileObject)
这给我带来了以下错误:
*** 错误:这个进程调用了一个 NSArray-takeing 方法,例如 initWithArray:,并传入了一个 NSSet 对象。目前正在解决此问题,但很快就会让您感到悲伤。
【问题讨论】: