简单地说, 如果该图像是从 UIImagePickerController(相机或照片库)中选择的,然后使用 NSKeyedArchiver 存储到对象的实例变量中,我可以将 UIImage 编码为 .plist...
func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!) {
let selectedImage : UIImage = image
myObject.image = selectedImage
...
}
但是,如果该图像存在于我的应用程序包中并分配给这样的变量,我不能将 UIImage 编码为 .plist...
myObject.image = UIImage(named: "thePNGImage")
...thePNGImage.png 位于我的应用程序包中。我可以随时在我的应用程序中显示它,但我无法在 plist 中存储和恢复它!
我希望用户从他或她的相机或照片库中选择一张个人资料图片,并从我的应用程序包中为他们的个人资料分配一张默认图片,如果他们不选择自己的一张的话。后者给我带来了问题。
如有任何帮助,我们将不胜感激。
谢谢!
最佳答案
首先,您不需要任何 plist。如果您想保存用户的首选项,请使用 NSUserDefaults(这是一个 plist,但它是为您维护的)。
其次,您不应该将图像保存到 plist 中。保存对图像的引用,例如它的网址。这样当你再次需要它时,你可以再次找到它。图像很大;一个 URL 很小。
最后,根据我的理解,你想知道用户是否选择了一张图片,如果没有,你想使用你的图片作为默认图片。 NSUserDefault 可以为此包含一个 Bool 值,或者您可以只使用缺少图像 URL 来表示“使用默认值”。
但在任何情况下,您都可以根据之前保存的任何信息在应用程序下次启动时恢复状态,这完全取决于您。没有什么事情会自己神奇地发生。如果您的图像在您下次启动时没有神奇地恢复,那是因为您没有将它恢复。您的应用在启动和创建界面时必须有代码/逻辑来执行此操作。
关于swift - 将 UIImage 保存到 plist 问题(SWIFT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27198307/