gpt4 book ai didi

swift - 无法从核心数据加载/检索图像

转载 作者:行者123 更新时间:2023-11-30 10:05:30 25 4
gpt4 key购买 nike

我在互联网上搜索了一整天的解决方案,但没有得到任何结果..我正在将图像保存到核心数据,当使用带有 NSFetchRequest 的 print(results) 进行测试时,建议通过在“调试区域”中显示以下内容来将其存储在核心数据中...

[<toootesting.Entity: 0x7fb0816a69f0> (entity: Entity; id: 0xd000000000040000 <x-coredata://2D52E511-B03F-4629-ADF1-DEBD80A63EC0/Entity/p1> ; data: {
photo = <89504e47 0d0a1a0a 0000000d 49484452 0000021c 000001e4 08020000 00fab561 c2000000 01735247 4200aece 1ce90000 0009>;

使用以下代码保存图像...

 @IBAction func buttonOne(sender: AnyObject) {

let img = UIImage(named: "Fencing")

self.imageViewOne.image = img
let imgData = UIImagePNGRepresentation(img!)

let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext

var newPhotos = NSEntityDescription.insertNewObjectForEntityForName("Entity", inManagedObjectContext: context)

newPhotos.setValue(imgData, forKey: "photo")

do {
try context.save()
print("image saved")

} catch {
print("error - saving NSData Image")
}
}

但是,当我尝试将保存的 CoreData 图像加载到第二个 imageView 时,获取请求会出现错误......“无法将类型 [AnyObject] 的值转换为预期参数类型 NSData”

代码是...

@IBAction func loadButton(sender: AnyObject) {

let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext

let request = NSFetchRequest(entityName: "Entity")
request.returnsObjectsAsFaults = false

do {
let results = try context.executeFetchRequest(request)

print(results)

self.imageViewTwo?.image = UIImage(data: results)

} catch {
print("error - Loading!!!")
}
}

看来我可以将第一个操作中的 UIImage 转换为 NSData,但是在 Fetch 上,无法将 NSData 转换回 UIImage 以便在 viewController 上显示它。

我的问题是,如果我可以轻松地从 UIImage 转换为 NSData,我是否应该能够以同样的方式反之亦然?是什么阻止代码显示图像?编码解决方案将不胜感激。

非常感谢您提前提供的帮助,因为我是这里的新人。

最佳答案

获取请求返回一个数组。你必须

  • 提取第一个对象
  • 转换为NSData

因此:

let results = try context.executeFetchRequest(request) as! [Entity]
let imageData = results.first!.photo

请注意,在传送代码中,您应该避免强制解包选项。
以上内容适用于您已子类化 NSManagedObject 来描述 Entity 实体。

关于swift - 无法从核心数据加载/检索图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36292164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com