我需要将图像从一个视图控制器传递到另一个视图控制器我有用户NSuserdefault将图像变量声明为全局但由于未捕获的异常而显示此错误应用程序' NSInvalidArgumentException',原因:&#39 ;尝试插入非属性列表对象
func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!) {
self.dismissViewControllerAnimated(true, completion: { () -> Void in
})
imageview.image = image
NSUserDefaults.standardUserDefaults().setObject(image, forKey:"image")
NSUserDefaults.standardUserDefaults().synchronize()
}
答案 0 :(得分:0)
你是什么意思?将UIImage的变量传递给另一个viewController?您提供的信息太少。
也许您想查看此链接Using Delegation to Communicate With Other View Controllers。
答案 1 :(得分:0)
只需创建NSString * imageName的属性并在推送/呈现视图控制器之前设置它,在您的其他视图控制器中,您可以读取此属性以创建UIImage。
答案 2 :(得分:0)
您无法将图像直接保存到UserDefaults中,您可以将图像压缩为png / jpeg数据,也可以将数据保存到userDefault中。使用方法
NSData *UIImagePNGRepresentation(UIImage *image);
和
if imageData {
NSUserDefaults.standardUserDefaults().setObject(imageData, forKey:"image")
NSUserDefaults.standardUserDefaults().synchronize()
}
当您阅读userDefaults时,您可以先读取数据,然后使用方法将数据转换为图像
UIImage-imageWithData:或swift style UIImage(data:)
一般来说,我们不像上面那样,我们将图像保存到文件,并将文件的路径保存到userDefault
答案 3 :(得分:0)
使用NSUSerdefaults存储图像:
var testimage = UIImage(named: "testimage.png");
NSUserDefaults.standardUserDefaults().setObject(UIImagePNGRepresentation(testimage), forKey:"image")
}
要在另一个类中检索它:
var imagedata: NSData = NSUserDefaults.standardUserDefaults().dataForKey("image")!
imageview.image = UIImage (data: imagedata)