2011-07-05 6 views
0

とNSArrayの同期するための問題、私はこのようにNSArrayのを持ってIOS:文字列

myArray[0] = [string1, string2, string3, string4, mySecondArray, string5]; (at 0 position) 

私は

NSString *outputString = @""; 

for (int i = 0; i< myArray.count; i++){ 

    outputString = [outputString stringByAppendingString:[[[myArray objectAtIndex:i ] componentsJoinedByString:@"#"] stringByAppendingString:@";"]]; 
} 

NSLog(@"string to write = %@", outputString); 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Text.txt"]; 
NSError *error; 

[outputString writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error]; 

このようにtxtファイル内のこの配列を書くには、その後のNSLogの結果は=です(MyArrayというの位置0)(mySecond配列が空である)

one#two#three#four#(
)#five; 

私が知りたい:

  • なぜ配列が折り返されますか?
  • この文字列を読むと、どうすればmySecondArrayであることがわかりますか?

答えて

0

あなたはNSArrayオブジェクトに対してメッセージcomponentsJoinedByString:、それはそのオブジェクトのそれぞれにdescriptionを呼び出し、それらを順番に連結します。 NSStringオブジェクトの場合、それらは文字列そのものです。配列は、descriptionメソッドが実装されている方法のためにラップされます。

文字列を読み取っている間に配列を特定することは可能ではないと思います。あなたは、要求に応じてではなく、すなわち

[[myArray objectAtIndex:0] writeToFile:filePath atomically:YES]; 

または

[myArray writeToFile:filePath atomically:YES]; 

ファイルに配列を書き込むことを検討すべきです。この方法で、要素を正しく読み戻すことができます。

関連する問題