2010-08-28 76 views
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返回(空)。检查文件是否存在的行向控制台打印“1”。

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

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

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

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

回答

1

为NSArray的initWithContentsOfFile:方法的文档说:

返回值初始化为包含由aPath或零指定的文件 的内容,如果该文件 不能打开或内容的一个阵列 文件不能被分析到一个数组中。 返回的对象可能与原始接收者不同 。

你不包括length声明在您的代码段,但我猜length.text返回一个NSString对象,而不是一个NSArray。所以你需要使用NSString中的initWithContentsOfFile:来读取文件,而不是NSArray。

+0

谢谢!我没有考虑这些文件的格式,当然它们有很大不同。在我从中复制代码的其他程序中,我正在使用数组进行写入和读取。 – Nicsoft 2010-08-28 19:38:38

+0

很高兴帮助!有时候所需要的只是你的代码上一双新鲜的眼睛。 :) – 2010-08-28 19:40:20

2

当您尝试创建从一个文件,the file must be in plist format的内容数组,而最外层的plist元素必须是<array>。如果它没有这种格式,初始化将失败,你的数组将是nil

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