尝试将UIImage保存到CoreData持久性存储时,我收到以下错误:
NSConcreteMutableData CGImage]: unrecognized selector sent to instance 0x7fe85a4b5cd0 2014-12-28 20:27:16.307 MyAppName[1578:245578] Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteMutableData CGImage]: unrecognized selector sent to instance 0x7fe85a4b5cd0'
在 setImage(image: UIImage)
函数的 self.image = data
行上抛出异常 .
这是我创建UIImage实例的地方:
let ipaIcon = CoreData.newIconWithImageAndName(UIImage(named: "IPA-Day.png")!, name: "IPA-Day")
此功能在我的数据访问层中:
class func newIconWithImageAndName(image:UIImage, name:String) -> Icon?
{
if(Icon.ExistsInStorage(name))
{
return nil
}
var description = NSEntityDescription.entityForName(Lookup.EntityName.Icon.rawValue, inManagedObjectContext: context)
var newIcon = Icon(entity: description!, insertIntoManagedObjectContext: context)
newIcon.setImage(image)
newIcon.name = name
var saveError: NSError?
context.save(&saveError)
if let error = saveError
{
println("Error creating new icon with image and name: \(name)")
return nil;
}
return newIcon
}
这是我保存将图像转换为NSData并尝试将其设置为托管对象的NSData属性的代码:
func setImage(image: UIImage)
{
let data: NSData = UIImagePNGRepresentation(image)
self.image = data
}
这是我的xcdatamodel的屏幕截图:
***我使用Swift(1.1)运行最新版本的Xcode(6.1) .
2 回答
试着这样做:
而不是这个:
您可以显式为属性图像定义一个setter,但参数类型错误 . 你必须这样做:
并称之为:
您正面临这个问题,因为您正在尝试将消息CGImage发送到NSData实例,该实例当然没有CGImage方法 .
当您认为尝试转换NSData实例同时认为它是UIImage时,它会生成错误 .