我遇到了这个有线问题,我无法从文件中获取内容并使用它启动我的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];
我在不同的程序中使用或多或少完全相同的代码而没有问题。
这里真的需要一些帮助,也许我现在只是瞎了......
答案 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。