使用 NSuserdefaults 在 swift 中设置图像
Setting Up an image in swift using NSuserdefaults
我正在构建一个 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
}
}
所以请你告诉我怎么做。
您不能在 NSUserDefaults 中存储图像。您是否考虑过只存储图像的路径或图像的名称?这将大大提高效率,并且也有效。
UIImage没有实现NSCoding协议,需要先将UIImage转成NSData
将您的代码更改为以下内容:
var imageData = UIImagePNGRepresentation(globalCurrentMembers[i].image)
var myEncodedImageData = NSKeyedArchiver.archivedDataWithRootObject(imageData)
MembersDefaultImage.setObject(myEncodedImageData, forKey: "globalCurrentMembersImage\(i)")
当然将图像存储到 NSUserDefaults 不是最佳做法,您应该将图像存储在某个文件目录中。
我正在构建一个 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
}
}
所以请你告诉我怎么做。
您不能在 NSUserDefaults 中存储图像。您是否考虑过只存储图像的路径或图像的名称?这将大大提高效率,并且也有效。
UIImage没有实现NSCoding协议,需要先将UIImage转成NSData
将您的代码更改为以下内容:
var imageData = UIImagePNGRepresentation(globalCurrentMembers[i].image)
var myEncodedImageData = NSKeyedArchiver.archivedDataWithRootObject(imageData)
MembersDefaultImage.setObject(myEncodedImageData, forKey: "globalCurrentMembersImage\(i)")
当然将图像存储到 NSUserDefaults 不是最佳做法,您应该将图像存储在某个文件目录中。