0

我遇到了这个有线问题,我无法从文件中获取内容并用它启动我的 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];

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

这里真的需要一些帮助,也许我只是暂时失明......

4

2 回答 2

2

当您尝试从文件的内容创建数组时,文件必须是 plist 格式,最外层的 plist 元素必须是<array>. 如果它没有该格式,初始化将失败并且您的数组将是nil.

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

于 2010-08-28T19:19:17.517 回答
1

NSArrayinitWithContentsOfFile:方法的文档说:

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

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

于 2010-08-28T19:19:45.990 回答