У меня есть 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 --- Когда он не распознает его как равный, через загрузку файла
Любое понимание этого очень ценится.
Geo ...