我有一个核心数据应用程序(如日记),我在其中提示用户从相机或照片库中选择图像并将其设置为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()
}
如果我无法解释我的问题,请详细询问。 感谢你的帮助......
答案 0 :(得分:1)
确保捆绑包中有"icn_noimage"
张图片。
并且仍然在imageData
类中将DiaryEntry
标记为可选。
将imageData与Optional(?),imageData?
。
如果图像不可用,这将接受图像数据的零值。
如果它已经是可选的,那么使用条件解包。
if let image = self.pickedImage
{
let imageData = UIImageJPEGRepresentation(image, 0.75)
entry.imageData = imageData
}