2010-12-04 6 views
0

У меня есть четыре tabViewItems, с идентификаторами 1, 2, 3 и 4 назначены в IB, а затем установить в виде констант, то есть:NSTabViewItem идентификатор NSNumber в одном контексте, NSString в другом

#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 имеет значение в качестве родового Но почему это непоследовательно классифицировано?

ответ

0

intValue - это метод NSString, а также NSNumber. Идентификаторы были целыми буквами.