无法设置图片Button- swift

时间:2016-01-19 10:04:25

标签: ios swift core-data uiimage

我有一个核心数据应用程序(如日记),我在其中提示用户从相机或照片库中选择图像并将其设置为ImageData,然后设置为按钮的图像。此部分有效,但如果用户没有选择图像,只需写入文本并按完成。它给了我“意外发现的零”错误。我有一个名为“icn_noimage”的图像,所以如果用户没有选择任何图像,该图像将被设置为按钮。我试着这样做: 这里,imageData,body,date是核心数据的属性。

 var pickedImage: UIImage! {
    didSet {
        if (pickedImage == nil) {
            self.imageButton?.setImage(UIImage(named: "icn_noimage"), forState: .Normal)
        } else {
            self.imageButton?.setImage(pickedImage, forState: .Normal)
        }
    }
}

 func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

    let image: UIImage! = info[UIImagePickerControllerOriginalImage] as! UIImage
    self.pickedImage = image

    self.dismissViewControllerAnimated(true, completion: nil)
}

  func insertDiaryEntry() {
    let coreDataStack: CoreDataStack = CoreDataStack.defaultStack
    let entry: DiaryEntry = NSEntityDescription.insertNewObjectForEntityForName("DiaryEntry", inManagedObjectContext: coreDataStack.managedObjectContext) as! DiaryEntry
    entry.body = self.textView.text
    entry.date = NSDate().timeIntervalSince1970
    entry.mood = self.pickedMood!.rawValue

    entry.imageData = UIImageJPEGRepresentation(self.pickedImage, 0.75)

    entry.location = self.location as String
    coreDataStack.saveContext()

}

如果我无法解释我的问题,请详细询问。 感谢你的帮助......

1 个答案:

答案 0 :(得分:1)

确保捆绑包中有"icn_noimage"张图片。

并且仍然在imageData类中将DiaryEntry标记为可选。

将imageData与Optional(?),imageData?

一起使用

如果图像不可用,这将接受图像数据的零值。

如果它已经是可选的,那么使用条件解包。

if let image = self.pickedImage
{
   let imageData = UIImageJPEGRepresentation(image, 0.75)
   entry.imageData = imageData
}