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.

をファイルに書き込むことでファイルを作成しています。つまり、おそらくではなくNSStringに読み込む必要があります。NSStringNSArray

于 2010-08-28T19:19:17.517 に答える
1

NSArray のinitWithContentsOfFile:メソッドのドキュメントには次のように書かれています。

戻り値aPath で指定されたファイルの内容を含むように初期化された配列、またはファイルを開くことができない場合、またはファイルの内容を配列に解析できない場合は nil。返されたオブジェクトは、元の受信者とは異なる場合があります。

コード スニペットに の宣言を含めていませんが、NSArray ではなく NSString オブジェクトlengthを返すと推測しています。したがって、NSArray ではなく、NSStringlength.textを使用してファイルから読み戻す必要があります。initWithContentsOfFile:

于 2010-08-28T19:19:45.990 に答える