Reputation: 1384
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
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