我想从子表访问父表中的字段。
public class Product extends RealmObject {
@SerializedName("location")
private String locationInStore;
@SerializedName("tags")
private RealmList<Tag> productTags;
}
和
public class Tag extends RealmObject {
@PrimaryKey
private String name;
}
}
现在我必须在标签表中搜索名称,然后我必须显示与该标签的搜索和位置匹配的名称。
RealmResults<Tag> name = mRealm.where(Tag.class).contains("name", tag, Case.INSENSITIVE).findAll();
但这只给了我标签名称,如何访问其位置和其他属性。
我也试过
List<RealmResults<Product>> results = new ArrayList<>();
results.add(mRealm.where(Product.class).contains("productTags.name", tag, Case.INSENSITIVE).findAll());
上面的查询返回产品对象,但此产品对象包含的标签数组不是与搜索匹配的标签数组。
提前致谢
答案 0 :(得分:0)
为什么不是数组之一与搜索不匹配的主要想法是Case.INSENSITIVE
搜索。因为功能有局限性,所以要小心使用它:
查询中的排序和不区分大小写的字符串匹配仅支持“Latin Basic”,“Latin Supplement”,“Latin Extended A”,“Latin Extended B”(UTF-8范围0-591)中的字符集。此外,排序已经完成,因此大写和非大写字母的排序与标准库不同。这意味着' - !'#0&amp;()*,。/:;?_ +&lt; =&gt; 123aAbBcCxXyYzZ是Realm中的实际排序顺序。此外,在使用equalTo()时在查询中设置不区分大小写的标志,notEqualTo(),contains(),endsWith(),startsWith()或like()仅适用于英语语言环境中的字符。
详细了解这些限制here