不从文件中检索内容

时间:2010-08-28 19:07:00

标签: ios objective-c iphone file file-management

我遇到了这个有线问题,我无法从文件中获取内容并使用它启动我的NSMutableArray。

这是我的代码:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSLog(@"Does file exist?: %i", [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat: @"%@/length.txt", documentsDirectory]]);

NSMutableArray *tempArr;

tempArr = [[NSMutableArray alloc] initWithContentsOfFile:[NSString stringWithFormat: @"%@/length.txt", documentsDirectory]];

尝试此操作时,initWithContentsOfFile返回(null)。检查文件是否存在的行将“1”打印到控制台。

这是我用来保存数据的代码:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
[length.text writeToFile:[NSString stringWithFormat: @"%@/length.txt", documentsDirectory] atomically:NO];

我在不同的程序中使用或多或少完全相同的代码而没有问题。

这里真的需要一些帮助,也许我现在只是瞎了......

2 个答案:

答案 0 :(得分:2)

当您尝试根据文件内容the file must be in plist format创建数组时,最外面的plist元素必须为<array>。如果它没有该格式,初始化将失败,您的数组将为nil

您是通过将NSString写入文件来创建文件的,这意味着您可能应该将其读入NSString,而不是NSArray

答案 1 :(得分:1)

NSArray的initWithContentsOfFile:方法的文档说:

  

返回值初始化为包含文件内容的数组   如果是文件,则由aPath或nil指定   无法打开或内容   文件无法解析为数组。   返回的对象可能不同   比原来的接收者。

您没有在代码段中包含length的声明,但我猜测length.text会返回NSString对象,而不是NSArray。因此,您需要使用NSString中的initWithContentsOfFile:从文件中读取该文件,而不是NSArray。