2012-01-16 2 views
0

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

- (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 или больше, он выходит из строя.

+0

_once добавить шестнадцатый @ "ABC", приложение аварии ** говорит что-то о viewDidLoad ** ._ Просьба предоставить больше информации. «Что-то», очень расплывчато и не помогает сузить вопрос. Предпочтительным является сообщение фактического сообщения об ошибке. – aqua

+0

Sooo ... Я переключил его на NSMutableArray следующим образом: viewDidLoad { array2 = [[NSMutableArray alloc] init]; [ситуация addObject: @ "ABC1"]; [ситуация addObject: @ "ABC2"]; [ситуация addObject: @ "ABC3"]; ---- [ситуация addObject: @ "ABC18"]; } и сделал следующее изменение (UITableViewCell *) Tableview: (UITableView *) Tableview cellForRowAtIndexPath: (NSIndexPath *) indexPath: NSString * CellValue = [массив2 objectAtIndex: indexPath.row]; \t cell.textLabel.text = cellValue; Результат? Работает как шарм !! – Jon

+0

@Jon, добавьте это как ответ и примите его, как только сможете. –

ответ

0

Ваш вопрос:

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"

Смежные вопросы