willhess
willhess

Reputation: 1384

How to check if an NSArray in NSUserDefaults contains a specific NSString

How do I check for a string that I added to a NSMutableArray in userDefaults. I have tried to use:

[arrayOfSavedStrings containsObject:currentString];

But that returns false.

How would I use a predicate or for loop to get this value?

I am trying to save values to an array in user defaults every time checkForSavedString is called.

- (void)checkForSavedString {

    NSString *stringImAdding = self.stringProperty;

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

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

}    

I am trying to check if the value I saved to userDefaults in the checkForSavedString method is present in the array.

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
}

Upvotes: 2

Views: 159

Answers (1)

willhess
willhess

Reputation: 1384

I found that the solution was to use a predicate to look for currentString in arrayOfSavedStrings and filter that array to only include what I was searching for.

- (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"];

}

Then in the viewDidLoad checking for the saved string

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
}

Upvotes: 2

Related Questions