【问题标题】:Comparing a RLMArray with NSString比较 RLMArray 和 NSString
【发布时间】:2016-02-08 16:26:58
【问题描述】:

有没有办法比较 RLMArray 和 NSString?

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

感谢您的帮助! :)

更新:

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

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

【问题讨论】:

    标签: objective-c nsstring realm


    【解决方案1】:

    如果你有一个RLMArray 的User 对象(因为NSStrings 本身不能直接保存到RLMArray),并且你想看看它们中是否有任何匹配NSString UITextField 的值,您应该能够通过 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/

    祝你好运!

    【讨论】:

    • 请看我的更新。如果我用你的代码完成 if ... else 语句,NSLog 总是显示“是”。我做错了什么?
    • 是的。即使 Realm 没有找到任何对象,它仍然会返回一个 RLMResults 对象,即使它是空的。这是因为该对象是“活动的”,如果您将更多对象添加到 userObjects 下线,它将使用新结果自动更新。最好测试一下if (matches.count &gt; 0)
    • 非常感谢蒂姆! :)
    • 我的荣幸!祝您的应用程序好运! :)
    【解决方案2】:

    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

    【讨论】:

    • 这是一个好的开始!但是您不能将NSString 对象直接存储在RLMArray 中。所以表达式[array[0] isEqualToString:] 比较来自数组本身的返回对象永远不会返回true。您当然可以使用 for 循环遍历每个对象并手动比较它,但只需使用 NSPredicate 查询的代码要少得多。 :)
    猜你喜欢
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 2011-10-25
    相关资源
    最近更新 更多