Swift核心数据FetchRequest NSData到UIIMage

时间:2015-10-12 13:12:24

标签: swift core-data uiimage

早上好,我正在使用Swift" new for me"和核心数据我试图通过以下方式从核心数据中获取我存储的UIIMage。仅供参考,它在核心中保存为二进制数据。如果我NSLog它我可以看到数据。我的获取请求看起来像这样。我没有错误,但我的图像没有显示。

当我保存到Core Data时,NSLog看起来像这样..

我有没有保存图片? 2015-10-12 09:05:43.307 Car-Doc-Safe-Plus [13972:3524049] NewImage中有这个(实体:Documents; id:0x7fd4c0432060; data:{     autoClub = nil;      driverLicense =< 89504e47 0d0a1a0a 0000000d 49484452 00000215 00000155 08020000 00d7368a d8000000 01735247 4200aece 1ce90000 001c&gt ;;     insuranceID = nil;     noteText = nil;     盘=零;     注册=零; })

但是当我获取它时看起来像这样......

请求中包含此内容(entity:Documents; predicate:((null)); sortDescriptors:((null)); type:NSManagedObjectResultType;)

 **override func viewDidLoad() {
    super.viewDidLoad()

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

let request = NSFetchRequest(entityName: "Documents")
request.returnsObjectsAsFaults = false;
let results : NSArray
try! results = context.executeFetchRequest(request)
if results.count > 0 {
    let res = results[0] as! NSManagedObject
    carImageView.image = res.valueForKey("driverLicense")as? UIImage

        }
}**

我知道我错过了一些东西,但我无法理解。任何帮助是极大的赞赏。 JZ

1 个答案:

答案 0 :(得分:1)

"二进制数据" Core Data中的类型用于读取和写入NSData个对象。由于您想要读/写UIImage,您需要使用" transformable"类型。通过可转换,Core Data将尝试使用NSCoding对数据进行编码/解码,并根据需要将其转换为NSData(Swift as?不会执行此操作)。由于UIImage符合NSCoding,因此除了告诉Core Data转换数据外,您不需要做任何额外的工作。