加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 10:42:02 所属栏目:百科 来源:网络整理
导读:我似乎偶然发现了从字符串中保存xml文件的问题(这是在iPhone上完成的) 文件本身存在并包含在项目中(因此在工作区内),我从后面的代码片段中获得的所有指示都在模拟器上没有任何错误而在iPhone上失败(错误513),但在任何一种情况下都是文件没保存! {Hits = con
我似乎偶然发现了从字符串中保存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;

}

任何帮助,将不胜感激,
-一个

解决方法

您不应该写入应用程序包中包含的文件.在真正的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];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读