Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中将结构强制转换为NSUserDefaults?_Ios_Swift_Struct_Nsuserdefaults - Fatal编程技术网

Ios 在Swift中将结构强制转换为NSUserDefaults?

Ios 在Swift中将结构强制转换为NSUserDefaults?,ios,swift,struct,nsuserdefaults,Ios,Swift,Struct,Nsuserdefaults,是否有一种方法可以将此Swift数据集以某种方式转换为NSUserDefauts可接受的形式?i、 e.NSSet对象?p、 我知道NSUserDefaults不适用于这种类型的数据,但我只是在测试 struct Users { var name: String = "" var stores: [Store] } struct Store { var name: String = "" var clothing

是否有一种方法可以将此Swift数据集以某种方式转换为NSUserDefauts可接受的形式?i、 e.NSSet对象?p、 我知道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")
}

我想你可以用字典。您需要创建方法将数据包装到struct,反之亦然

例如:

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

当您需要获取struct时

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

}

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

非常确定您的存储在Swift::中的类型有限,但问题是关于强制转换的,对吗?是的,我看到的示例总是在NSUserDefaults Core Data中存储数组或数组数组……我的数据结构,尤其是存储对象,是一个与字典数组关联的字符串,我不知道如何在非Swift API(如NSUserDefults)中存储该字符串。@PSUSabes但是,NSUserDefaults有Swift API。您需要保存然后读取数据,对吗?然后您只需要使用setObject:forKey:进行设置,使用objectForKey进行读取。请看我的答案并试一试。谢谢@flinth,但我发现NSUSerDefaults没有名为setDictionarystores的成员,但它不仅仅是一个数组,它还包含一个嵌套字典?@PSUSabes在我的示例存储中是一个数组。我的示例基于您的问题,在您的案例中,stores是Store struct的数组。它也可以是字典。