iOS NSComparisonresult выпуск - PullRequest
       8

iOS NSComparisonresult выпуск

0 голосов
/ 06 ноября 2011

Возникает исключение, когда я ввожу более двух символов в поле поиска. Я использую NSComparisonResult для отображения результатов в UITableView:

- (void)filterContentForSearchText:(NSString*)searchText
{

for (mystring in self.array)
{

NSComparisonResult result = [mystring compare:searchText options:(NSCaseInsensitiveSearch) 
range:NSMakeRange(0, [searchText length])];

if (result == NSOrderedSame)
        {   
            NSUInteger index=[self.array indexOfObjectIdenticalTo:mystring]; 
            NSUInteger maxindex = index + 50;
            for (index ; (index < [self.array count] && index <= maxindex && index!= NSNotFound); index ++)
            {   
                [self.filteredListContent addObject:[NSDictionary dictionaryWithObjectsAndKeys:[self.array objectAtIndex:index],@"english",[self.secondarray objectAtIndex:index],@"translated",nil]];  
            }
            break;
        }
}

Вывод показывает:

 -[UIDeviceWhiteColor compare:options:range:]: unrecognized selector sent to instance 0x5e4a5d0
2011-11-06 12:10:51.932 XXX[2583:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIDeviceWhiteColor compare:options:range:]: unrecognized selector sent to instance 0x5e4a5d0'

Что означает UIDeviceWhiteColor в этом случае?


self.array = [[NSArray alloc] initWithArray:
           [[NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"first" ofType:@"txt"]
                                      encoding:NSUTF8StringEncoding error:NULL] componentsSeparatedByString:@"\n"]];

self.secondarray = [[NSArray alloc] initWithArray:
           [[NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"second" ofType:@"txt"]
                                      encoding:NSUTF8StringEncoding error:NULL] componentsSeparatedByString:@"\n"]];

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

В self.array есть UIDeviceWhiteColor объект.Вы также должны разыграть mystring как NSString или любой другой объект.Если вы приведете его к UIDeviceWhiteColor, то компилятор выдаст вам предупреждение, что UIDeviceWhiteColor не не отвечает на compare:options:range:.

for (NSString *mystring in self.array)
{
    //some code
}
1 голос
/ 06 ноября 2011

Это потому, что где-то в вашем self.array есть UIDeviceWhiteColor, который должен состоять всего из NSString с.Как вы заполняете этот массив?

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