コンテンツはファイルから取得されません
-
01-10-2019 - |
質問
私はこの有線の問題を抱えています、私はファイルからコンテンツを取得してそれで私の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 Returns(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
NSARRAYではなく、NSSTRINGオブジェクトを返します。したがって、ファイルからそれを読み返す必要があります initWithContentsOfFile:
nsStringから、nsarrayではなく。
他のヒント
ファイルの内容から配列を作成しようとすると、 ファイル しなければならない プリスト形式になります, 、そして、最も外側のプリスト要素はそうでなければなりません <array>
. 。その形式がない場合、初期化は失敗し、配列は nil
.
書くことによってファイルを作成しています NSString
ファイルに、つまり、おそらくそれを読んでいるはずです NSString
, 、ではありません NSArray
.