【问题标题】:How to check if an NSArray in NSUserDefaults contains a specific NSString如何检查 NSUserDefaults 中的 NSArray 是否包含特定的 NSString
【发布时间】:2018-11-02 23:42:58
【问题描述】:

如何检查我添加到NSMutableArrayuserDefaults 的字符串。我试过用:

[arrayOfSavedStrings containsObject:currentString];

但这会返回 false。

如何使用谓词或 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
}

【问题讨论】:

  • 至少使用arrayForKey 而不是objectForKey
  • 您想在registrationFormSubmission 中添加或替换appFormId 吗?你为什么要stringWithFormat
  • @vadian +1 arrayForKey

标签: objective-c nsstring nsarray nsuserdefaults nspredicate


【解决方案1】:

我发现解决方案是使用谓词在 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
}

【讨论】:

  • 你写一个字符串然后搜索一个数字?您是否每次都将RegistrationAppFormId 替换为registrationFormSubmission 中的一个appFormId
猜你喜欢
  • 2011-06-09
  • 1970-01-01
  • 2011-11-15
  • 2011-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
相关资源
最近更新 更多