如何检查 NSUserDefaults 中的 NSArray 是否包含特定的 NSString

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

如何检查我添加到 userDefaults 中的 NSMutableArray 的字符串。我尝试使用:

[arrayOfSavedStrings containsObject:currentString];

但是那个 returns 是假的。

如何使用谓词或 for 循环来获取此值?

每次调用 checkForSavedString 时,我都试图将值保存到用户默认值的数组中。

- (void)checkForSavedString {

    NSString *stringImAdding = self.stringProperty;

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

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

}    

我正在尝试检查数组中是否存在我在 checkForSavedString 方法中保存到 userDefaults 的值。

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
}

我发现解决方案是使用谓词在 arrayOfSavedStrings 中查找 currentString 并过滤该数组以仅包含我正在搜索的内容。

- (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
}