2010-08-03 3 views
0

У меня огромная проблема. Я скопировал код из примера поиска в таблице на страницах ресурса Apple.UISearchDisplay - крах приложения

вот так:

#pragma mark - 
#pragma mark Content Filtering 

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

[self.chatMessagesArrayCopyForSearching removeAllObjects]; // First clear the filtered array. 
if ([searchText length]==0) 
{ 

}else 
{ 
    for (FriendMessage *friend in chatMessagesArray) 
    { 
    NSComparisonResult result = [friend.message compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])]; 
    if (result == NSOrderedSame) 
    { 
    [self.chatMessagesArrayCopyForSearching addObject:friend]; 

    NSLog(@"%@", friend.message); 
    } 
    } 
} 
} 

сбой приложения, когда, например я типа одну букву, а затем второе письмо. вероятно, что-то с friend.message becouse консоли говорит:

-[AccessibilityObjectWrapper message]: unrecognized selector sent to instance 0x5d8d580 

FriendMessage это пользовательский класс, унаследованный от NSObject, и сообщение является стандартным NSString *.

спасибо за любую оказанную помощь

mapedd

P.S. извините, если код не очень читаемый

ответ

0

Тот факт, что он говорит: «AccessibilityObjectWrapper» в вашей ошибки говорит вам, что, возможно, был FriendMessage объект там в какой-то момент, но уже нет :)

Это, как правило, потому что в вашем коде отсутствует удержание.

Где вы создаете массив объектов FriendMessage - можете ли вы изменить свой вопрос и добавить этот код?

Спасибо.

0

Я создаю свой контейнер chatMessageArray i.e для своих объектов FriendMessages в viewDidLoad, его переменной класса, и я не освобождаю его в коде. chatMessageArray, если он заполнен каким-либо XML из Интернета, сначала он отображает все правильно, но после его поиска происходит сбой. Например, у меня есть сообщение, которое попросит: «0Suspendise ...», когда я набираю «0», , searchdisplaycontroller показывает это сообщение, но после ввода «S» он сработает.

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