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

我或多或少在其他程序中使用了几乎完全相同的代码,没有问题。

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

有帮助吗?

解决方案

Nsarray的文档 initWithContentsOfFile: 方法说:

返回值 初始化的数组以包含Apath或NIL指定的文件的内容,如果无法打开文件或文件的内容无法将其解析为数组。返回的对象可能与原始接收器不同。

您不包括声明 length 在您的代码段中,但我猜那是 length.text 返回NSString对象,而不是NSArray。因此,您需要使用文件从文件中读取该文件 initWithContentsOfFile: 来自nsstring,而不是nsarray。

其他提示

当您尝试从文件的内容创建数组时, 文件 必须 处于PLIST格式, ,最外面的plist元素必须是 <array>. 。如果没有这种格式,初始化将失败,您的数组将是 nil.

您正在通过编写一个文件来创建文件 NSString 到一个文件,这意味着您可能应该将其阅读到 NSString, ,不是 NSArray.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top