共享 NSUserDefaults plist 文件



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

有没有办法将文件名传递给 NSUserDefaults,或者我是否需要使用其他类? 或者是否可以与另一台设备的同一应用程序共享 plist?

设备 1 和设备 2 上的应用是同一应用。 我不是在尝试在不同的应用程序之间共享数据。

将其作为字典传递对您有用吗?

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"];

如果它们都是你的应用,则可以考虑使用应用组让这两个应用访问共享容器。在这种情况下,您将像往常一样使用 NSUserDefaults。

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

最新更新