共享NSUserDefaults plist文件?

时间:2015-03-16 19:05:44

标签: swift nsuserdefaults

我想使用NSUserDefaults的功能来保存状态。我目前有这个工作。但是我想复制这个plist文件并将其应用到另一台设备上的同一个应用程序中。

是否有某种方法可以将文件名传递给NSUserDefaults,还是需要使用其他类?或者用相同的应用程序与其他设备共享plist是否可以?

device1和device2上的应用是相同的应用。我不是想在不同的应用程序之间共享数据。

2 个答案:

答案 0 :(得分:1)

将它作为字典传递给你吗?

NSDictionary *dict = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];

然后在另一台设备上:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
for (NSString *key in dictionaryRepresentation.allKeys) {
    id ob = dictionaryRepresentation[key];
    [defaults setObject:ob forKey:key];
}

或者,您可以将dict写入.plist文件,将其传输,从.plist解码到dict并按照我上面的说法进行操作。

写入.plist文件:

[dict writeToFile:@"path/to/your/file.plist" atomically:YES];

.plist文件中读取:

NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:@"path/to/your/file.plist"];

答案 1 :(得分:0)

如果它们都是您的应用,您可以考虑使用app groups让这两个应用访问共享容器。在这种情况下,你会照常使用NSUserDefaults。

否则,您无法将文件名或URL传递给NSUserDefaults。您需要使用NSDictionary +归档自行滚动​​,或者只需执行一次 - 即将当前默认值复制到plist,以某种方式传输,然后将值写入默认值。