我正在建立一个快速的游戏,并需要设置一些图像。 我的代码使用字符串或整数:
for var i = 0; i < globalCurrentMembers.count; ++i {
var MembersDefaultName = NSUserDefaults.standardUserDefaults()
MembersDefaultName.setValue(globalCurrentMembers[i].name, forKey: "globalCurrentMembersName\(i)")
MembersDefaultName.synchronize()
}
但我的图片错误
for var i = 0; i < globalCurrentMembers.count; ++i {
var MembersDefaultImage = NSUserDefaults.standardUserDefaults()
MembersDefaultImage.setValue(globalCurrentMembers[i].image,
forKey: "globalCurrentMembersImage\(i)")
MembersDefaultImage.synchronize()
}
globalCurrentMembers
是Member
的数组,如下所示:
class Member {
var image = UIImage ()
var name = String ()
var progression = Int()
var round = Int()
var level = Int()
var imageProgression = [UIButton]()
func Init(){
image = UIImage(named: "default.png")!
name = "default"
progression = 0
round = 0
level = 0
}
}
那么请你告诉我这是怎么做的。
答案 0 :(得分:1)
您无法在NSUserDefaults中存储图像。您是否考虑过只存储图像的路径或图像的名称?这将非常有效,而且也有效。
答案 1 :(得分:1)
UIImage没有实现NSCoding协议,你需要先将UIImage转换为NSData。
将您的代码更改为以下内容:
var imageData = UIImagePNGRepresentation(globalCurrentMembers[i].image)
var myEncodedImageData = NSKeyedArchiver.archivedDataWithRootObject(imageData)
MembersDefaultImage.setObject(myEncodedImageData, forKey: "globalCurrentMembersImage\(i)")
当然,将图像存储到NSUserDefaults不是最佳做法,您应该将图像存储在某个文件目录中。