【问题标题】:Save data in txt将数据保存为txt
【发布时间】:2012-03-25 19:03:33
【问题描述】:

我有 ios 应用程序。我需要存储一些数据。我试图在 txt 文件中这样做:

[toFile writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL];

但是当我关闭视图控制器时,我保存数据的地方,文件的内容再次为空。为什么?

【问题讨论】:

    标签: ios xcode storage text-files datastore


    【解决方案1】:

    确保将文件保存在文档目录中,而不是资源目录中,因为您无法写入应用程序包。

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"user.txt"];
    

    还可以查看iOS Storage Guidelines(需要登录):

    1. 只有用户生成的或您的应用程序无法重新创建的文档和其他数据才能存储在 /Documents 目录,将自动 由 iCloud 备份。

    我认为这些教程可以帮助您了解如何在 iOS 上使用目录和文件:

    【讨论】:

    • 我应该将我的 .txt 文件放在项目中的什么位置?
    • 我更新了我的示例。如果您生成这样的文件路径,它应该可以工作:)
    • 是的。但是我应该在哪里第一次创建这个文件?您的链接不起作用“此网页有重定向循环”
    • 您不必创建文件……writeToFile 将为您处理。只需确保您知道将其存储在何处以供重复使用。我想把它放到 Documents 目录就可以了。但请记住,如果不加密,则不应将敏感数据存储在此文件中,因为它并没有真正保存在那里。
    【解决方案2】:

    我敢打赌,您正在尝试写入您的应用程序包。你不能。您必须在 NSDocumentsDirectory 或 [app sandbox]/Library 中写入。

    【讨论】:

    • NSString *path =[[NSBundle mainBundle] pathForResource:@"user" ofType:@"txt"]; - 错了吗?
    • 是的。您不能写入您的应用程序包。
    • 说真的,你到底为什么不赞成这个??
    【解决方案3】:

    NSError * 参数传递给writeToFile,当writeToFile 返回NO(表示失败)时,您可以打印出NSError 信息以帮助您找出问题所在。

    例如:

    NSError * error = nil;
    BOOL success;
    
    success = [toFile writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
    
    if (success == NO)
    {
        NSLog( @"error in writeToFile - %@", [error localizedDescription] );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      相关资源
      最近更新 更多