Учитывая приведенный ниже код, на первой итерации логи отображаются нормально. Для второй итерации приложение вылетает со следующим сообщением об ошибке:
019-11-07 09:54:08.156277+0100 xxxion[520:202084] iconNumberString : 1026
2019-11-07 09:54:12.160849+0100 xxxtion[520:202084] [self.iconNumbers lastObject]) : 1026
2019-11-07 09:54:24.598805+0100 xxxion[520:202084] -[__NSSingleObjectArrayI addObject:]: unrecognized selector sent to instance 0x2824a3fd0
(lldb)
Используемый nssortdescriptor:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"intValue" ascending:YES];
Для решения этой проблемы: 1 - поскольку я думал, что nssordescriptor преобразуетсодержимое массива в целое число, так как указанный ключ указывает в nssortdescriptor, добавлен следующий журнал: NSLog (@ "[self.iconNumbers lastObject]):% i", [self.iconNumbers lastObject]);чтобы проверить, были ли значения преобразованы в целое число или нет
вопрос заключается в следующем: 1-делает ли nssortdescriptopn содержимое NSArray в целое число, так как nssordescriptor указывает -initWithKey: @ "intValue" -?
2-для этой строки_
self.iconNumbers = (NSMutableArray *)[self.iconNumbers
sortedArrayUsingDescriptors:@[sortDescriptor]];
почему изменения не должны были применяться непосредственно к -self.iconnumbers- ?? почему я должен присвоить результаты RightHandSide одному и тому же -self.iconnumber- снова ??
код :
For loop
[self.iconNumbers addObject:iconNumberString];
self.iconNumbers = (NSMutableArray *)[self.iconNumbers sortedArrayUsingDescriptors:@[sortDescriptor]];
NSLog(@"iconNumberString : %@", iconNumberString);
NSLog(@"[self.iconNumbers lastObject]) : %@", [self.iconNumbers lastObject]);
NSLog(@"[self.iconNumbers lastObject]) : %i", [self.iconNumbers lastObject]);//added for testing after received the crash
End of loop