比较 RLMArray 和 NSString

Comparing a RLMArray with NSString

有没有办法比较 RLMArrayNSString

我想将 textfield.text 与 RLMArray 的 存储的用户名 进行比较。

感谢您的帮助! :)

更新:

-(void)checkUser {
    RLMArray<User *> *userObjects;
            RLMResults *matches = [userObjects objectsWhere:@"name CONTAINS %@", _userName];

    if (matches) {
       NSLog(@"YES");
    }
    else {
       NSLog(@"NO");
    }
}

RLMArray 是 Realm 中用于定义对多关系的容器类型。

与 NSArray 不同,RLMArray 拥有单一类型,由 objectClassName 属性 指定。

为了进行比较,您必须有一个来自 RLMArray 的字符串对象。有很多方法可以做到这一点。例如,如果要将数组的第一个对象与 textfield.text 进行比较:
if ([[YOURARRAY firstObject] isEqualtoString:textfield.text]){ //do something }
你也可以比较数组中的第二个对象,做这样的事情:
if ([[YOURARRAY objectAtIndex:1] isEqualtoString:textfield.text]){ //do something }
这是领域的文档: https://realm.io/docs/objc/latest/api/index.html

如果您有 RLMArrayUser 个对象(因为 NSString 本身不能直接保存到 RLMArray),并且您希望查看它们中的任何一个是否与 UITextFieldNSString 值匹配,您应该能够使用 NSPredicate 查询非常轻松地做到这一点:

@interface User
@property NSString *username;
@end

NSString *textFieldString = textfield.text;
RLMArray<User *> *userObjects = .../

RLMResults *matches = [userObjects objectsWhere:@"username CONTAINS '%@'", textFieldString];

有关 NSPredicate 过滤的更多信息,Realm 还维护了一个您可以使用的语法列表:https://realm.io/news/nspredicate-cheatsheet/

祝你好运!