使用writeToFile保存文件

时间:2016-02-06 22:31:49

标签: ios objective-c writetofile

所以我发现了一个小问题,使用writeToFile保存数组以便稍后检索它。我正在使用:

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                             NSUserDomainMask, YES);
        if ([paths count] > 0)
        {
            NSString *arrayPath = [[paths objectAtIndex:0]
                         stringByAppendingPathComponent:@"array.out"];

            [finalSavedArray writeToFile:arrayPath atomically:YES];
            [[NSUserDefaults standardUserDefaults] setObject:arrayPath forKey:@"SavedArrayPath"];
            [[NSUserDefaults standardUserDefaults] synchronize];
        }

将'finalSavedArray'保存为文件,然后使用以下方法检索此数组:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
        NSLog(@"File path: %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"SavedArrayPath"]);
        NSMutableArray *savedArray = [NSMutableArray arrayWithContentsOfFile:[[NSUserDefaults standardUserDefaults] objectForKey:@"SavedArrayPath"]];
        dispatch_sync(dispatch_get_main_queue(), ^{
            NSLog(@"SAVED ARRAY:%@",savedArray);
        });

    });

当我在保存文件后立即访问文件时,这很正常,但是当我重新启动应用程序时,数组显示为null并且在保存的目录中似乎找不到。从一点阅读看来,这个文件目录似乎应该是相对的,因为我每次打开应用程序时都会保存到该文件目录,但我还是无法弄清楚如何更改我的代码为了将其保存到相对目录。任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:3)

应用程序的路径可以更改。永远不要存储文件的绝对路径。在您的情况下,只需存储相对于Documents文件夹的路径。

如果要读取文件,请从[textView.textContainer setMaximumNumberOfLines:3]; 读取相对路径,然后重建完整路径,就像编写文件一样。

写文件:

NSUserDefaults

阅读文件:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
if ([paths count] > 0)
{
    NSString *arrayPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"array.out"];

    [finalSavedArray writeToFile:arrayPath atomically:YES];
    [[NSUserDefaults standardUserDefaults] setObject:[arrayPath lastPathComponent] forKey:@"SavedArrayPath"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}