我正在编写 iOS 应用程序中的搜索栏逻辑。我有 1 个 NSArray “results”,其中包含从 NSFetchRequest 返回的实体,以及一个空的 NSMutableArray “resultados”,我想在其中添加从第一个数组返回的对象。
这是代码:
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString{
[self.resultados removeAllObjects];
NSFetchRequest *request = [NSFetchRequest alloc];
request.predicate = [NSPredicate predicateWithFormat:@"numero contains [cd] %@",searchString];
request.entity = [NSEntityDescription entityForName:@"Plaza" inManagedObjectContext:self.contexto];
NSSortDescriptor *ordenPorNumero = [[NSSortDescriptor alloc]initWithKey:@"numero" ascending:YES];
[request setSortDescriptors:[[NSArray alloc]initWithObjects:ordenPorNumero, nil]];
NSError *error = nil;
NSArray *results = [self.contexto executeFetchRequest:request error:&error];
if(error){
NSLog(@"Ha ocurrido un error: %@ %@",error,[error userInfo]);
abort();
}
[self.resultados addObjectsFromArray:results];
return YES;
}
每次执行此行时:
[self.resultados addObjectsFromArray:results];
我得到以下异常:
2013-07-09 19:21:18.142 Actividad1[2347:c07] *** Terminating app due to uncaught exception NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 9 beyond bounds [0 .. 0]
我不明白如何使用 addObjectsFromArray 方法超越任何数组边界。事实上,如果我将这条指令替换为以下基本上相同的调试代码,我可以看到我正在添加所有对象,但在添加最后一个对象时总是抛出异常,无论结果返回多少对象:
int num =0;
for(id i in results){
Plaza *p = i;
NSLog(@"%d - %@",num,p.numero);
num++;
[self.resultados addObject:i];
}
我尝试了很多变化,但我不知道发生了什么。
在此先感谢您的帮助。