将RLMArray与NSString进行比较

时间:2016-02-08 16:26:59

标签: objective-c nsstring realm

有没有办法将 RLMArray NSString 进行比较?

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

感谢您的帮助! :)

更新

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

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

2 个答案:

答案 0 :(得分:1)

如果您有RLMArrayUser个对象(因为NSString自己无法直接保存到RLMArray),而您希望查看其中任何一个是否与NSString的{​​{1}}值相匹配,您应该可以使用UITextField查询轻松完成此操作:

NSPredicate

有关@interface User @property NSString *username; @end NSString *textFieldString = textfield.text; RLMArray<User *> *userObjects = .../ RLMResults *matches = [userObjects objectsWhere:@"username CONTAINS '%@'", textFieldString]; 过滤的详细信息,Realm还会维护您可以使用的语法列表:https://realm.io/news/nspredicate-cheatsheet/

祝你好运!

答案 1 :(得分:0)

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

与NSArray不同,RLMArrays包含由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