Как проверить, содержит ли NSArray в NSUserDefaults определенный NSString - PullRequest
0 голосов
/ 24 мая 2018

Как проверить строку, добавленную в NSMutableArray в userDefaults.Я пытался использовать:

[arrayOfSavedStrings containsObject:currentString];

Но это возвращает ложь.

Как бы я использовал предикат или цикл for, чтобы получить это значение?

Я пытаюсьсохранять значения в массиве по умолчанию каждый раз при вызове checkForSavedString.

- (void)checkForSavedString {

    NSString *stringImAdding = self.stringProperty;

    NSMutableArray *arrayOfStrings = [NSMutableArray array];
    [arrayOfStrings addObject:stringImAdding];

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:arrayOfStrings forKey:@"SavedStrings"];

}    

Я пытаюсь проверить, присутствует ли в массиве значение, сохраненное в userDefaults в методе checkForSavedString.

self.stringProperty = self.stringFromSomewhereElse;

NSString *currentString = [NSString stringWithFormat:@"%@", self.stringProperty];

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

NSArray *arrayOfSavedStrings = [userDefaults objectForKey:@"SavedStrings"];


if ([arrayOfSavedStrings containsObject:currentString]) {

    // my code
}

1 Ответ

0 голосов
/ 24 мая 2018

Я обнаружил, что решением было использовать предикат для поиска currentString в arrayOfSavedStrings и отфильтровать этот массив, чтобы включить только то, что я искал.

- (void)checkForSavedString {

    NSString *stringImAdding = self.stringProperty;

    NSMutableArray *arrayOfSavedStrings = [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] arrayForKey:@"SavedStrings"]];
    [arrayOfSavedStrings addObject:stringImAdding];

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:arrayOfSavedStrings forKey:@"SavedStrings"];

}

Затем в viewDidLoad проверка сохраненной строки

self.stringProperty = self.stringFromSomewhereElse;

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSArray *arrayOfSavedStrings = [userDefaults arrayForKey:@"SavedStrings"];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF == %@", self.stringProperty];
NSArray *results = [arrayOfSavedStrings filteredArrayUsingPredicate:predicate];

if (results.count >= 1) {
    // my code
}
...