Идентификатор NSTabViewItem - это NSNumber в одном контексте, NSString в другом
У меня есть четыре tabViewItems, с идентификаторами 1, 2, 3 и 4, назначенными в IB, а затем настроены как константы, то есть:
#define kTabViewSubject 1
При тестировании, какой tabViewItem выбран, он работает, чтобы обработать идентификаторы как NSNumbers, как это:
if ([self.drawerTabView selectedTabViewItem] identifier] intValue]]] == kTabViewSubject])
// do something
Но при выборе tabViewItem, если я обращаюсь с тем же идентификатором, что и NSNumber, вот так…
[self.drawerTabView selectTabViewItemWithIdentifier:[NSNumber numberWithInt:kTabViewSubject]];
… Идентификатор оценивается как огромное адресоподобное число, и я получаю исключение "за пределами".
Что работает, так это обрабатывать идентификатор как NSString, например так:
#define kTabViewSubjectX @"1"
// --
[self.drawerTabView selectTabViewItemWithIdentifier:kTabViewSubjectX];
Я понимаю, что свойство идентификатора NSTabViewItem настроено как универсальный "идентификатор". Но почему оно по-разному классифицируется?
1 ответ
Решение
intValue - это метод NSString, а также NSNumber. Идентификаторы всегда были строками.