我對如何在覈心數據中創建2個NSObject之間的關係有疑問。對象之間的核心數據關係
首先我有這個CoreData結構。
有文件和形式之間的關係。表單可能有多個文件,但一個文件只能有一個表單。
我創建了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個文件。所以像這樣的東西startet:
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 NSObject而不是Swift,我有幾個方法將一個文件添加到表單中。但是我怎樣才能在Swift中做到這一點?
如果我有一個關係 - 如何從某個窗體讀取所有文件對象?
編輯:
我現在改了行:
@NSManaged var files: NSSet
到
@NSManaged var files: [Files]
並使用循環:
newFormObject.files.append(newFileObject)
這給我帶來了以下錯誤:
***錯誤:此進程已調用一個NSArray的方法,如initWithArray :,並傳入一個NSSet對象。目前這種情況正在得到解決,但很快就會導致你的悲傷。
感謝您的回覆:如果我使用:newFormObject.files = newFileObject編譯器告訴我:文件是無法轉換爲NSSet中 – derdida 2014-08-27 13:19:30
因此改變了我的NSSet爲[文件] - 但現在: 「文件與Anyobject不同」 – derdida 2014-08-27 13:20:50
newFileObj ect.forms = newFormObject; – ggfela 2014-08-27 13:31:59