我使用的是此帖中发现的代码:Mulitple Arrays From Plist,具有相同的plist格式。将NSDictionary保存为plist
这工作成功,但我不知道如何将创建的数组以相同的格式保存到plist中。
我该怎么做到这一点?
编辑:它不是那么多,我需要的保存,但形成的数据保存。
plist是一个包含字符串及其对应键的字典数组。 所有具有某个键的字符串都放入它们自己的数组中。
如何将该数组放回到字典数组的正确位置,准备保存?
我使用的是此帖中发现的代码:Mulitple Arrays From Plist,具有相同的plist格式。将NSDictionary保存为plist
这工作成功,但我不知道如何将创建的数组以相同的格式保存到plist中。
我该怎么做到这一点?
编辑:它不是那么多,我需要的保存,但形成的数据保存。
plist是一个包含字符串及其对应键的字典数组。 所有具有某个键的字符串都放入它们自己的数组中。
如何将该数组放回到字典数组的正确位置,准备保存?
不要忘了创建myPlistFile.plist并将其添加到您的应用程序资源文件夹中。
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
您可以在这里扫描路径并使用for循环搜索myPlistFile.plist
。
NSString *plistPath = [documentsDirectory stringByAppendingPathComponent:@"myPlistFile.plist"];
if (![[NSFileManager defaultManager] fileExistsAtPath: plistPath])
{
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"myPlistFile" ofType:@"plist"];
[[NSFileManager defaultManager] copyItemAtPath:bundle toPath:plistPath error:&error];
}
[myDict writeToFile:plistPath atomically: YES];
这里是最简单的方法:
NSDictionary* dict = ...;
[dict writeToFile:@"..." atomically:YES];
我知道,这将保存文件,但我不认为这会变成从plist中形成的阵列回array-> dictionary-> string的相同方式 –
你试过了吗?它可以写给plist任何可以从plist读取的东西。除非你改变了你在字典中订购数据的方式,否则它应该以完全相同的方式写出来。 –
**最重要** - 此方法递归地验证所有包含的对象是属性列表对象(NSData,NSDate,NSNumber,NSString,NSArray或NSDictionary的实例)在写出文件之前,如果所有对象不是属性列表对象,则返回“NO”,因为结果文件不是有效的属性列表。 – enadun
相反,加载的NSDictionary从文件:
+ (id)dictionaryWithContentsOfFile:(NSString *)path;
这将不起作用,因为mainBundle是只读的 –
@Ashley Staggs:检查更新的答案。 – Jhaliya
我知道我要保存它的位置,但这是我需要得到正确结果 –