Swift - 核心数据关系 - 专辑风格
Swift - Core Data Relationship - Album Style
几天来我一直致力于建立一个有效的 Core Data 关系。我取得了一些进展,但没有实质性进展,所以我希望比我聪明得多的人能够解决这个问题并帮助我。
关于一些上下文,我实际上是在创建一个相册应用程序。相册里有照片,每张照片上都有说明。我构建了一个实体“ScannedItem”,它具有属性 "savedTitle"、"savedText" 和 "savedImage".
savedTitle = 图片的标题。
savedText = 图片的标题。
savedImage = 图片本身。
我不确定如何将 "ScannedItem"(包含先前属性的实体)添加到我的 "Album" 实体。
有关详细信息,"ScannedItem" 及其所有属性可能只在一个相册中,因此我认为这将是一个 'To-One' 关系。
我在这里包含了我如何构建我的实体和关系的图像。
下面是我保存 "Scanned Item Entity" 的代码。
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")
}
现在我收到一条错误消息,指出 "the entity Album is not key value coding-compliant for the key " 相册。我不知道该怎么办,我已经玩弄它好几个小时了。
在 Album
上,将 scanItem
更改为 scanItems
并使其为多,因为您可以在一个相册中包含多个项目。
将albumRelationship
更改为album
并将其设置为1。
您需要知道或获取要添加到的相册,然后只需设置:
saveData.setValue(album, forKey: "album")
核心数据会自动为您设置关系的另一端。
几天来我一直致力于建立一个有效的 Core Data 关系。我取得了一些进展,但没有实质性进展,所以我希望比我聪明得多的人能够解决这个问题并帮助我。
关于一些上下文,我实际上是在创建一个相册应用程序。相册里有照片,每张照片上都有说明。我构建了一个实体“ScannedItem”,它具有属性 "savedTitle"、"savedText" 和 "savedImage".
savedTitle = 图片的标题。
savedText = 图片的标题。
savedImage = 图片本身。
我不确定如何将 "ScannedItem"(包含先前属性的实体)添加到我的 "Album" 实体。
有关详细信息,"ScannedItem" 及其所有属性可能只在一个相册中,因此我认为这将是一个 'To-One' 关系。
我在这里包含了我如何构建我的实体和关系的图像。
下面是我保存 "Scanned Item Entity" 的代码。
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")
}
现在我收到一条错误消息,指出 "the entity Album is not key value coding-compliant for the key " 相册。我不知道该怎么办,我已经玩弄它好几个小时了。
在 Album
上,将 scanItem
更改为 scanItems
并使其为多,因为您可以在一个相册中包含多个项目。
将albumRelationship
更改为album
并将其设置为1。
您需要知道或获取要添加到的相册,然后只需设置:
saveData.setValue(album, forKey: "album")
核心数据会自动为您设置关系的另一端。