我正在构建一个 swift 游戏,需要设置一些图像。 我的代码适用于字符串或整数:
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
}
}
所以请你告诉我怎么做。
最佳答案
UIImage没有实现NSCoding协议(protocol),需要先将UIImage转NSData。
将您的代码更改为以下内容:
var imageData = UIImagePNGRepresentation(globalCurrentMembers[i].image)
var myEncodedImageData = NSKeyedArchiver.archivedDataWithRootObject(imageData)
MembersDefaultImage.setObject(myEncodedImageData, forKey: "globalCurrentMembersImage\(i)")
当然将图像存储到 NSUserDefaults 不是最佳实践,您应该将图像存储在某个文件目录中。
关于xcode - 使用 NSuserdefaults 在 swift 中设置图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29379284/