我是Objective C的新手,这是我的问题。我有两个值的数组, int&字符串:
[Messier new:1 :@"Name 1"],
[Messier new:2 :@"Name 2"]...
我在tableView中推送了这些数组,在tableView中有一个UISearchBar。当我点击单元格时,我创建文本按钮“显示”
我需要从我的数组返回选定名称的int值(单元格中的名称)。在正常状态(搜索之前),我的按钮返回正确的值,但搜索后返回错误。例如(见上图)Andromeda有11号,蝴蝶20号,Beehive 30号,我正在寻找Beehive(麻木30号),搜索后(Beehive获得第一个单元格)我得到的值11(它是Andromeda值),而不是30因为我需要。
这是我的serchBar代码:
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if([searchText isEqualToString:@""] || searchText == Nil)
{
searching = NO;
}
else
{
searching = YES;
[searchArray removeAllObjects];
searchArray = [[NSMutableArray alloc] init];
searchDictionary = [[NSMutableDictionary alloc] init];
NSArray *sourceArray;
NSDictionary *sourceDictionary;
sourceArray = [[AstroData sharedAstroData] messierObjectsArray];
sourceDictionary = [[AstroData sharedAstroData] messierNameIndexesDictionarry];
for(NSString *key in [sourceDictionary allKeys])
{
NSArray *messier = [sourceDictionary objectForKey:key];
for(Messier *mess in messier)
{
NSRange result = [mess.name rangeOfString:searchText options:(NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch)];
if(result.location != NSNotFound)
{
NSMutableArray *existingArray;
if((existingArray = [searchDictionary objectForKey:key]))
{
[existingArray addObject:mess];
}
else
{
NSMutableArray *tempArray = [NSMutableArray array];
[searchDictionary setObject:tempArray forKey:key];
[tempArray addObject:mess];
}
}
}
}
for(id key in sourceArray)
{
if([searchDictionary objectForKey:key])
[searchArray addObject:key];
}
}
[table reloadAllComponents];
}
也许我的表视图有问题?谢谢大家。
P.S。抱歉我的英文)
答案 0 :(得分:0)
问题出现在文本按钮“显示”中,我只需要添加但是方法
if(search)
....
else
... but code