我想使用NSUserDefaults的功能来保存状态。我目前有这个工作。但是我想复制这个plist文件并将其应用到另一台设备上的同一个应用程序中。
是否有某种方法可以将文件名传递给NSUserDefaults,还是需要使用其他类?或者用相同的应用程序与其他设备共享plist是否可以?
device1和device2上的应用是相同的应用。我不是想在不同的应用程序之间共享数据。
答案 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,以某种方式传输,然后将值写入默认值。