Проверьте, существует ли NSString / NSMutableArray в NSUserDefault? - PullRequest
1 голос
/ 24 января 2012

Я делаю это приложение с таблицей и прочее.Я хочу сделать закладку «Избранное», а в подробном представлении я хочу сделать звездообразную кнопку.Я завершил работу с надписью «добавить в избранное» и хочу, чтобы невозможно было добавить строку в мой любимый ViewController более одного раза.

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 24 января 2012

Вы хотите, чтобы NSArray containsObject:.

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

1 голос
/ 24 января 2012

вы можете проверить используя

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