我正在使用图像选择器从本地设备库中选择图像,但是一旦使用xcode 7.3,ios9和swift 2.2使用核心数据关闭图库,图像就不会被保存并显示在表格视图单元格中
if isUpdate == true{
print("object id \(self.store?.objectID)")
self.store?.sName = name.text
self.store?.sDescription = desc.text
//save.setTitle("my text here", forState: .Normal)
let img = UIImage(named: "image.jpeg")
let imgData = UIImageJPEGRepresentation(img!,1)
self.store?.sImage = imgData
do {
try appdelegate.managedObjectContext.save()
self.navigationController?.popViewControllerAnimated(true)
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}else{
//get the description of the entity
let storeDescription = NSEntityDescription.entityForName("Store",inManagedObjectContext: appdelegate.managedObjectContext)
//we create managed object to be inserted to core data
let store = EventsandnotesStore(entity : storeDescription!,insertIntoManagedObjectContext:appdelegate.managedObjectContext)
store.sName = name.text
store.sDescription = desc.text
//
let img = UIImage(named: "image.jpeg")
let imgData = UIImageJPEGRepresentation(img!,1)
store.sImage = imgData
do {
try appdelegate.managedObjectContext.save()
self.navigationController?.popViewControllerAnimated(true)
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}
}
答案 0 :(得分:0)
由于你没有提到Name和Description字段的问题或者商店对象的创建,我假设所有工作都正常,你对CoreData进程没问题。
要检查的一件事是JPEG转换调用中的整数值1。这应该是一个Float,所以在调用中尝试1.0,虽然我很惊讶没有被XCode抓住。不确定这是否会导致您的问题。
你遇到的转换可能遇到的另一个潜在问题是UIImageJPEGRepresentation调用因其他原因而失败,返回nil值(例如,当我将CIImage直接转换为UIImage时发生这种情况,但是如果我通过CGImage做到这一点就行了 - 去图吧。鉴于这一切,您应该检查呼叫的结果。我使用了一个guard语句和自定义记录器,如下所示:
guard let thumbnailData = UIImageJPEGRepresentation(thumbnailUI, Set.shared.jpegQuality) else
{
logError(#file, line: #line, column: #column, function: #function, description: "JPG Conversion Error - thumbnail")
return nil
}
如果失败了,你需要检查你从拣货员那里得到的图片。
如果您遇到数据库方面的问题,是否在视图控制器中包含了TableView委托函数(controllerWillChangeContent等)。您将需要这些,以便在带有图像的记录发生更改时调用configureCell方法。
这些是我开始的事情。