xcode - 使用 NSuserdefaults 在 swift 中设置图像

标签 xcode swift 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
   }
}

所以请你告诉我怎么做。

最佳答案

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/

相关文章:

arrays - type 'any' has no subscript members error with map

ios - 在核心数据中拥有与任何其他实体无关的实体是否可以?

ios - 在 iOS 11.0.3 中插入​​注释 View 失败

xcode - iOS 模拟器无法启动

ios - 尝试理解委托(delegate)

php - 通过 HTTPHeaderField 传递值时出现有趣的问题

iphone - 当有一个时为零值

ios - 首次安装应用程序时存储变量

ios - 触发 AVAudioPlayer 停止所有声音并播放选定的声音,除非单击播放(选定)按钮

objective-c - 对大量缺失的、非常基本的 Objective-C 类进行故障排除