我正在开发iPhone应用程序,我需要实现从一个实体到另一个实体的一对多关系。我从coredata数据库中导出result + 1
子类但在核心数据模型文件中找不到像Objective的关系访问器-C。
虽然我能够在关系NSManagedObject
中设置数据,但这仅在iPhone应用程序运行时持续存在。一旦我杀死并重新启动应用程序,我就没有从核心数据中获取实体关系。
我不确定我做错了什么。如果有人能告诉我如何在NSSet
关系对象中设置数据,那将会很棒。任何示例都将是一个很好的帮助
这是我的核心数据模型文件。一个文件夹可以将多个内容作为文件夹详细信息
NSSet
答案 0 :(得分:2)
如果FolderContent和FolderList的关系定义为
<强> FolderContent 强>
extension FolderContent {
@NSManaged var contentID: NSNumber?
@NSManaged var contentTitle: String?
@NSManaged var contentType: String?
@NSManaged var publishDate: String?
@NSManaged var folderList: Set<FolderList>?
}
<强> FolderList 强>
extension FolderList {
@NSManaged var folderID: NSNumber?
@NSManaged var folderName: String?
@NSManaged var folderDetail: FolderContent?
}
假设您想要保留记录及其关系
func persistRecords() {
// Insert the new records
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let folderContentEntity = NSEntityDescription.entityForName("FolderContent", inManagedObjectContext: managedContext)
let folderListEntity = NSEntityDescription.entityForName("FolderList", inManagedObjectContext: managedContext)
//Create FolderContent record
let folderContentObject = FolderContent(entity: folderContentEntity!, insertIntoManagedObjectContext: managedContext)
folderContentObject.setValue(CONTENTID, forKeyPath: "contentID")
...
//Create FolderList record
let folderListObject = FolderList(entity: folderListEntity!, insertIntoManagedObjectContext: managedContext)
folderListObject.setValue(FOLDERID, forKeyPath: "folderID")
...
//Set relationship here
folderListObject.folderDetail = folderContentObject
do {
try managedContext.save()
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}
答案 1 :(得分:0)
我猜你做了folder.folderDetail.addObject
之类的事情。核心数据不会起作用,因为幕后的核心数据正在做很多事情来维护图形完整性。您必须使用mutableSetValueForKey
来获取集合并让核心数据发挥其神奇作用。