У меня есть NSMutableArray, который я создаю при загрузке программы. Если программа завершается, я сохраняю массив в файле. Затем, когда приложение запускается снова, я проверяю, существует ли этот файл, и если да, прочитайте его как массив.NSMutableArray Строки, меняющиеся после чтения из файла
Проблема в том, что при первом создании все нормально, я проверяю объект массива на определенную строку, и если он равен, сделайте что-нибудь. Это отлично работает с первого раза. Но если я прочитаю массив назад из штрафа и сделаю то же самое сравнение, хотя оба они говорят, что они одинаковы, он не думает так и пропускает процесс. Пример кода:
Это если файл не существует, создать с нуля:
NSMutableArray *tmpArray=[[NSMutableArray alloc] initWithObjects:
@"1000",
@"1000",
@"1000",
@"500",
@"500",
@"500",
@"250",
@"250",
@"250",
@"100",
@"100",
@"100",
@"100",
@"TRIPLE",
@"TRIPLE",
@"DOUBLE",
@"DOUBLE",
@"- 500",
@"- 250",
@" - 250",
@"- 100",
@"- 100",
@"HALF",
@"BUST",
nil];
если файл существует:
pnames = [[NSMutableArray alloc] initWithContentsOfFile:myPath];
Вот где сравнение приходит в:
NSString *strInfo;
strInfo = [pnames objectAtIndex: theInteger - 1];
NSLog(@"strInfo: %@", strInfo);
if (strInfo == @"DOUBLE")
{
//do something
}
Как я уже сказал, это сравнение отлично работает при первом создании, но не тогда, когда массив загружается через файл.
Запись файла из осуществляется через:
(void)applicationWillTerminate:(UIApplication *)application {
[pnames writeToFile:[self saveFilePath] atomically:YES];
}
Когда я смотрю в отладчике на strInfo (сверху), она показывает, как:
NSCFString - 0c8168 - DOUBLE --- С создание, и не признают его равным
NSCFString - 0x3d42af0 - DOUBLE --- Когда он не признает его равным, с помощью загрузки файла
Любое понимание на это г reatly оценили.
Geo ...
oh duh - haha Я должен был получить это. Хороший ответ +1 –
То, что он работал при первой загрузке, является тонкой gotcha (теперь объясняется). Пожалуйста! – bbum