【发布时间】:2016-07-03 18:52:12
【问题描述】:
我这几天一直致力于建立有效的 Core Data 关系。我已经取得了一些进展,但没有什么实质性的进展,所以我希望比我更聪明的人能够解决这个问题并帮助我。
就上下文而言,我本质上是在创建一个相册应用程序。在相册里面,会有照片,每张照片都有一个标题。我构建了一个实体“ScannedItem”,它具有“savedTitle”、“savedText”和“savedImage”属性。
savedTitle = 图片的标题。
savedText = 图片的标题。
savedImage = 图片本身。
我不确定如何将“ScannedItem”(包含先前属性的实体)添加到我的“相册”实体中。
有关详细信息,“ScannedItem”及其所有属性可能仅在一个相册中,因此我认为这将是“一对一”的关系。
下面是我保存“扫描项目实体”的代码。
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext
let saveData = NSEntityDescription.insertNewObjectForEntityForName("ScannedItem", inManagedObjectContext: context)
let imageRep = UIImagePNGRepresentation(image)!
saveData.setValue(textTitle, forKey: "savedTitle")
saveData.setValue(scannedText, forKey: "savedText")
saveData.setValue(imageRep, forKey: "savedImage")
do{
try context.save()
}catch{
print("Failed")
}
我将如何将该 ScannedItem 保存到相册?几天来我一直在为代码苦苦挣扎,这几乎让我发疯了。任何帮助将不胜感激。是时候问问专家了。
更新
do{
let request = NSFetchRequest(entityName: "ScannedItem")
let results = try context.executeFetchRequest(request)
let saveAlbum = NSEntityDescription.insertNewObjectForEntityForName("Album", inManagedObjectContext: context)
saveAlbum.setValue(results, forKey: "album")
let albumRequest = NSFetchRequest(entityName: "Album")
let albumResults = try context.executeFetchRequest(albumRequest)
if albumResults.count > 0{
for item in albumResults as! [NSManagedObject]{
let albumPrint = item.valueForKey("album")
print("Album Test: " + (albumPrint! as! String))
}
}
if results.count > 0{
for item in results as! [NSManagedObject]{
let titleSaved = item.valueForKey("savedTitle")
let textSaved = item.valueForKey("savedText")
//let imageSaved = item.valueForKey("savedImage")
//let titleSaved = item.valueForKey("savedTitle")
print("Title" + (titleSaved! as! String))
print("Text" + (textSaved! as! String))
//print(imageSaved!)
}
}
}catch{
print("Failed")
}
现在我收到一条错误消息,指出“实体专辑不符合键“专辑”的键值编码。我不知道该怎么办,我已经玩了好几个小时了。
【问题讨论】:
标签: ios swift core-data entity relationship