在 Swift 中将结构转换为 NSUserDefaults?

Casting struct to NSUserDefaults in Swift?

有什么方法可以将这个 Swift 数据集以某种方式转换为 NSUserDefauts 可接受的形式?即 NSObject NSSet? (p.s。我知道 NSUserDefaults 不适用于此类数据,但我只是在测试)

struct Users {
        var name: String = ""
        var stores: [Store]
    }

    struct Store {
        var name: String = ""

        var clothingSizes = [String : String]()

    }

    init() {
        let userDefaults = NSUserDefaults.standardUserDefaults()

        if let usersPeople = userDefaults.valueForKey("Users") as?

我不知道这是最好的方法,但你可以试试这个。

struct Users {
        var name: String = ""
        var stores: [Store]
    }

    struct Store {
        var name: String = ""

        var clothingSizes = [String : String]()

    }

var Advert = [Users]()

init() {
        NSUserDefaults.standardUserDefaults().setObject(Advert[0].name, forKey: "NameYouWant")
}

我想你可以使用字典。您需要制作方法将数据包装到结构中,反之亦然。

例如:

var users : [String: AnyObject]()
users["name"] = "SomeName"
users["stores"] = yourStoreArray
NSUserDefaults.standardUserDefaults().setObject(users, forKey: "Users")

类似的东西。

而当你需要获取结构时

if let myDictionaryFromUD = userDefaults.objectForKey("Users") as? [String:AnyObject]{
   self.users = Users(myDictionaryFromUD["name"], stores: myDictionaryFromUD["stores"] as! [Store]) 

}

我还假设您将保存到用户的 userDefaults 数组。在这种情况下,您将保存 [[String: AnyObject]],但机制相同。