IOS: проблема с синхронизацией nsarray со строкой - PullRequest
0 голосов
/ 05 июля 2011

У меня NSArray таким образом

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];

тогда результат NSLog = (позиция 0 myArray) (массив mySecond пуст)

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

Я хочу знать:

  • Почему обтекание массива?
  • Когда я пойду читать эту строку, как я узнаю, что это mySecondArray?

1 Ответ

0 голосов
/ 05 июля 2011

Когда вы отправляете сообщение componentsJoinedByString: для объекта NSArray, он вызывает description для каждого из своих объектов и объединяет их по порядку.Для NSString объектов они сами являются строками.Массив переносится из-за способа реализации метода description.

Что касается идентификации массива во время чтения строки обратно, я не думаю, что это возможно.Вам следует рассмотреть возможность записи массива в файл, а именно:

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

или

[myArray writeToFile:filePath atomically:YES];

в зависимости от требований.Таким образом, вы сможете читать элементы обратно правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...