2012-01-24 2 views
1

Я делаю это приложение со столом и т. Д. Я хочу создать «Избранное» -tab, и в подробном представлении я хочу создать звездообразную кнопку. Я покончил с «добавлением в избранное» и хочу сделать невозможным добавление строки в мой любимый элемент управления несколько раз.Проверьте, существует ли NSString/NSMutableArray в NSUserDefault?

В принципе, я хочу проверить, содержит ли мои NSUserDefaults определенную строку в своем NSMutableArray, которая соответствует indexPath.row в представлении таблицы. Это очень сложно объяснить ...

Вот фрагмент кода. Я хочу проверить, существует ли «indexPathRowString» уже в favoriteKey, прежде чем добавлять его снова.

-(IBAction)addToFavorite:(id)sender { 
    NSMutableArray* alreadyFavourites = [[[NSUserDefaults standardUserDefaults] objectForKey:@"favoriteKey"] mutableCopy]; 
    [favoritedAlready addObject:indexPathRowString]; 
    [[NSUserDefaults standardUserDefaults] setObject:alreadyFavourites forKey:@"favoriteKey"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

Я очень благодарен за ответы, мне действительно нужно это исправить! :)

ответ

3

Вы хотите NSArray'scontainsObject:.

Поскольку NSString реализует метод NSObject протокола isEqual: вернуть YES для двух строк одного и того же содержания, этот метод будет работать правильно для вас с двумя различными строковыми объектами одного и того же значения.

+0

Спасибо большое !!! – Christoffer

+0

Красивое объяснение, успокойся. – thandasoru

1

вы можете проверить с помощью

if (![favoritedAlready containsObject:indexPathRowString]) 
{ 
    [favoritedAlready addObject:indexPathRowString]; 
} 
+0

Итак, вы имеете в виду; if ([ужеFavourites containsObject: indexPathRowString] == NO) {// добавить в массив}? – Christoffer

+0

ну, да. это действительно сработало. большое спасибо! – Christoffer

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