NSArray вызывает сбой в viewDidLoad - PullRequest
0 голосов
/ 17 января 2012

У меня есть приложение, которое имеет два отдельных представления с двумя отдельными (и отдельно заполненными) NSArrays. В array1 у меня есть 10 @ ABC-объектов, а в array2 у меня 18 @ ABC-объектов. view1 с array1 загружается отлично; однако view2 вылетает. Я изменил количество элементов @ "ABC" в массиве 2 как метод проб и ошибок для отладки и обнаружил, что могу иметь только 15 @ "ABC" объектов. Как только я добавляю шестнадцатую @ "ABC", приложение вылетает, говоря что-то о viewDidLoad. Кто-нибудь знает, как обойти это или что я делаю, что может привести к сбою приложения?

- (void)viewDidLoad {
    array2 = [[NSArray alloc] initWithObjects:@"ABC1", @"ABC2", @"ABC3", @"ABC4", @"ABC5", @"ABC6", @"ABC7", @"ABC8", @"ABC9", @"ABC10", @"ABC11", @"ABC12", @"ABC13", @"ABC14", @"ABC15", ABC16", @"ABC17",@"ABC18",nil];

    [super viewDidLoad];
}

(#pragma mark Table view methods)

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [array2 count];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // Set up the cell...
    cell.textLabel.text = [array2 objectAtIndex:indexPath.row];
    cell.textLabel.textColor = [UIColor redColor];

    return cell;
}

Как я уже сказал, array2 прекрасно работает с 15 или менее объектами, но как только я добавлю число 16 или больше, он вылетает.

1 Ответ

0 голосов
/ 19 января 2012

Из вашего вопроса:

array2 = [[NSArray alloc] initWithObjects:@"ABC1", @"ABC2", @"ABC3", @"ABC4", @"ABC5", @"ABC6", @"ABC7", @"ABC8", @"ABC9", @"ABC10", @"ABC11", @"ABC12", @"ABC13", @"ABC14", @"ABC15", ABC16", @"ABC17",@"ABC18",nil];

NSArrays может содержать только объекты, а не примитивные типы C. Ваш 16-й элемент, ABC16", читается как примитив во время инициализации array2 и сбоя вашего приложения.

ABC16" должно быть @"ABC16"

...