如何覆盖 plist 文件的内容? (iPhone / iPad)

Posted

技术标签:

【中文标题】如何覆盖 plist 文件的内容? (iPhone / iPad)【英文标题】:How can I overwrite the contents of a plist file? (iPhone / iPad) 【发布时间】:2012-01-21 17:08:07 【问题描述】:

我的主应用程序包中有一个 plist 文件,我想通过我的应用程序对其进行更新。这是我正在使用的代码,问题是 plist 似乎没有得到更新。我的代码不正确还是有其他问题?

// Data
NSMutableDictionary *data = [[NSMutableDictionary alloc] init];
[data setObject:self.someValue forKey:@"Root"];

// Save the logs
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"MyFile" ofType:@"plist"];
[data writeToFile:filepath atomically:YES];

有人可以帮帮我吗?

【问题讨论】:

您无法更新应用程序包中的任何内容,您需要先将其复制到您的 Documents 目录。 我不知道这一点。请您就如何实施您的建议提出建议? 【参考方案1】:

ios 限制写入捆绑文件。如果你想要一个可写的 plist,你需要将它复制到你的应用程序的 Documents 文件夹并在那里写入。

【讨论】:

感谢您的帮助,请您建议如何执行此操作? 看看***.com/questions/3238143/…,应该会有帮助。 谢谢@JoachimIsaksson!我被困在这个上。似乎 iOS 允许您覆盖与应用程序捆绑在一起的文件,但在应用程序重新启动时,所有更改都消失了。我很困惑。【参考方案2】:

这是我在其中一个应用程序中的操作方式

//get file paths
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [documentPaths objectAtIndex:0];
NSString *documentPlistPath = [documentsDirectory stringByAppendingPathComponent:@"document.plist"];
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];  
NSString *bundlePlistPath = [bundlePath stringByAppendingPathComponent:@"bundle.plist"];

//if file exists in the documents directory, get it
if([fileManager fileExistsAtPath:documentPlistPath])            
    NSMutableDictionary *documentDict = [NSMutableDictionary dictionaryWithContentsOfFile:documentPlistPath];
        return documentDict;
 
//if file does not exist, create it from existing plist
else 
    NSError *error;
    BOOL success = [fileManager copyItemAtPath:bundlePlistPath toPath:documentPlistPath error:&error];
    if (success) 
        NSMutableDictionary *documentDict = [NSMutableDictionary dictionaryWithContentsOfFile:documentPlistPath];
        return documentDict;
    
    return nil;

希望对你有帮助

【讨论】:

以上是关于如何覆盖 plist 文件的内容? (iPhone / iPad)的主要内容,如果未能解决你的问题,请参考以下文章

如何重新生成 iPhone Xcode info.plist 文件

如何在 iphone 中以编程方式创建 PLIST 文件

如何在 iPhone 中以编程方式在 plist 文件中添加多个数组

将数据附加到 PLIST - iPhone

如何将 Info.plist 文件从 mac os 项目转换为 iphone 项目?

替换 plist iphone 的内容