gpt4 book ai didi

objective-c - 在 Objective-C (iPhone) 中将字符串保存到文件中

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:50 24 4
gpt4 key购买 nike

我似乎偶然发现了一个关于从字符串中保存 xml 文件的问题(这是在 iPhone 上完成的)该文件本身存在并包含在项目中(因此在工作区中),并且我从以下代码片段中获得的所有指示在模拟器上都没有任何错误地通过并且在 iPhone 上失败(错误 513),但在任何一种情况下文件没有保存!

{
Hits = config->Hits;

NSString* filenameStr = [m_FileName stringByAppendingFormat: @".xml" ];
NSString* pData = [self getDataString]; // write xml format - checked out ok
NSError *error;

/* option 2 - does not work as well
NSBundle *mainBundle = [NSBundle mainBundle];
NSURL *xmlURL = [NSURL fileURLWithPath:[mainBundle pathForResource: m_FileName ofType: @"xml"]];

if(![pData writeToURL: xmlURL atomically: true encoding:NSUTF8StringEncoding error:&error])
{
NSLog(@"Houston - we have a problem %s@\n",[error localizedFailureReason]);
return false;
}
*/

if(![pData writeToFile: filenameStr atomically: FALSE encoding:NSUTF8StringEncoding error:&error])
{
NSLog(@"Houston - we have a problem %s@\n",[error localizedFailureReason]);
return false;
}
return true;

任何帮助将不胜感激,-A

最佳答案

您不应写入应用程序包中包含的文件。在真实的 iPhone 上,您可能无法执行此操作,因为这些文件是经过数字签名的。

即使可以修改打包文件,也不是存放数据的好地方。从 App Store 升级或 Xcode 构建重新安装应用程序将用原始文件覆盖该文件。

相反,将您的 XML 存储到 Documents 目录中。你可以得到这样的路径:

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSString* leafname = [m_FileName stringByAppendingFormat: @".xml" ];
NSString* filenameStr = [documentsDirectory
stringByAppendingPathComponent:leafname];

如果您的文件需要一些您不想在代码中生成的初始状态,请让您的应用在第一次需要它时检查它是否存在于文档目录中,如果它丢失,请从包中的模板。

存储结构化数据的另一种方法是使用用户默认值。例如:

[[NSUserDefaults standardUserDefaults] setObject:foo forKey:FOO_KEY];

关于objective-c - 在 Objective-C (iPhone) 中将字符串保存到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1283774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com