Xcode 使用NSuserdefaults在Swift中发送信号SIGABRT
我正在建立一个快速的游戏,需要建立一个类。我的代码适用于类中的所有元素,但不适用于此Xcode 使用NSuserdefaults在Swift中发送信号SIGABRT,xcode,swift,nsuserdefaults,Xcode,Swift,Nsuserdefaults,我正在建立一个快速的游戏,需要建立一个类。我的代码适用于类中的所有元素,但不适用于此 func saveInformationMember(){ var MembersDefaultName = NSUserDefaults.standardUserDefaults() MembersDefaultName.setValue(globalCurrentMembers, forKey: "globalCurrentMembersData") MembersDefaultNam
func saveInformationMember(){
var MembersDefaultName = NSUserDefaults.standardUserDefaults()
MembersDefaultName.setValue(globalCurrentMembers, forKey: "globalCurrentMembersData")
MembersDefaultName.synchronize()
}
GlobalCurrentMembers
是一个Member
数组,如下所示:
class Member {
var image = String ()
var name = String ()
var progression = Int()
var round = Int()
var level = Int()
var imageProgression = [UIButton]()
func Init(){
image = "default.png"
name = "default"
progression = 0
round = 0
level = 0
}
要以这种方式保存您的类,
成员
需要遵守NSCoding
协议。请向Aaron Brager发送Thx以获得is响应。以下是回应:
func saveInformationMember(){
let data = NSKeyedArchiver.archivedDataWithRootObject(globalCurrentMembers)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "member")}
func loadInformationMember(){
if let data = NSUserDefaults.standardUserDefaults().objectForKey("member") as? NSData {
globalCurrentMembers = NSKeyedUnarchiver.unarchiveObjectWithData(data) as [Member]
}
我的班级:
class Member : NSObject, NSCoding {
var image = String ()
var name = String ()
var progression = Int()
var round = Int()
var level = Int()
var imageProgression = [UIButton]()
func initiation(){
image = "default.png"
name = "default"
progression = 0
round = 0
level = 0
}
required convenience init(coder decoder: NSCoder) {
self.init()
self.image = decoder.decodeObjectForKey("image") as String!
self.name = decoder.decodeObjectForKey("name") as String!
self.progression = decoder.decodeIntegerForKey("progression") as Int!
self.round = decoder.decodeIntegerForKey("round") as Int!
self.level = decoder.decodeIntegerForKey("level") as Int!
}
func encodeWithCoder(coder: NSCoder) {
coder.encodeObject(self.image, forKey: "image")
coder.encodeObject(self.name, forKey: "name")
coder.encodeInt(Int32(self.progression), forKey: "progression")
coder.encodeInt(Int32(self.round), forKey: "round")
coder.encodeInt(Int32(self.level), forKey: "level")
}}
这些建议根本不起作用,我明白了。谢谢您的建议;)它还应该向NSObject确认,否则应用程序将崩溃