NSArray выпуск в сегментированном контроле - PullRequest
0 голосов
/ 04 декабря 2011

Я использовал в этом примере для создания сегментированного представления. В моем viewDidLoad методе я получаю предупреждение и код вылетает.

- (void)viewDidLoad {
    [super viewDidLoad];

    self.segmentedViewControllers = [self segmentedViewControllerContent];

    NSArray * segmentTitles = [self.segmentedViewControllers arrayByPerformingSelector:@selector(title)];

    self.segmentedControl = [[UISegmentedControl alloc] initWithItems:segmentTitles];
    self.segmentedControl.selectedSegmentIndex = 0;
    self.segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;

    [self.segmentedControl addTarget:self
                              action:@selector(didChangeSegmentControl:)
                    forControlEvents:UIControlEventValueChanged];

    self.navigationItem.titleView = self.segmentedControl;
    [self.segmentedControl release];

    [self didChangeSegmentControl:self.segmentedControl]; 
}

Я получаю предупреждение в этой строке:

NSArray * segmentTitles = [self.segmentedViewControllers arrayByPerformingSelector:@selector(title)];

, что NSArray may not respond to arrayByPerformingSelector.

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

arrayByPerformingSelector: - недопустимое сообщение для отправки на NSArray. Этот метод, вероятно, входит в одно из расширений категории NSArray, которое использует исходный код. Проверьте исходный пример, которому вы следуете, и попытайтесь найти, где определено arrayByPerformingSelector:, затем #import этот файл в вашем коде.

0 голосов
/ 15 мая 2013

arrayByPerformingSelector: - это метод обмана, который кто-то написал, чтобы избежать этого:

NSMutableArray * tempArray = [NSMutableArray array];

for (id thing in things)
{
     [tempArray addObject:thing.name];
}
NSArray * namesOfthings = [tempArray copy];

Однако в стеке iOS уже есть что-то, что сделает это бесплатно!

NSArray * namesOfthings = [things valueForKeyPath:@"unionOfObjects.name"];

Подробнее о операциях по сбору KVC можно прочитать в блоге NSHipsters . Для неясного API это действительно очень полезно. Мне грустно, что мне понадобилось так много времени, чтобы найти его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...