首页 文章

将UIImage作为二进制数据保存到CoreData实体时出错

提问于
浏览
0

尝试将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的屏幕截图:
enter image description here

***我使用Swift(1.1)运行最新版本的Xcode(6.1) .

2 回答

  • 3

    试着这样做:

    newIcon.image = UIImagePNGRepresentation(image)
    

    而不是这个:

    newIcon.setImage(image)
    

    您可以显式为属性图像定义一个setter,但参数类型错误 . 你必须这样做:

    func setImage(data: NSData)
    {
        image = data
    }
    

    并称之为:

    newIcon.setImage(UIImagePNGRepresentation(image))
    
  • 0

    您正面临这个问题,因为您正在尝试将消息CGImage发送到NSData实例,该实例当然没有CGImage方法 .

    当您认为尝试转换NSData实例同时认为它是UIImage时,它会生成错误 .

相关问题