比较 Parse.com c# 中的关系
本文关键字:关系 Parse com 比较 | 更新日期: 2023-09-27 18:34:37
我想比较 ParseObject 上的两个关系,并确定它们是否相等,最好不要对关系调用 fetch((。我试过这样做:
MyParseObject.Get<ParseObject>("MyRelation") == MyOtherParseObject.Get<ParseObject>("MyRelation")
但它不起作用。我尝试在谷歌上搜索,但没有找到我问题的答案。是否可以在不获取数据的情况下比较这些关系?
任何帮助将不胜感激。谢谢。
我以前没有用过这个,但我想无论如何我都会看看文档和代码。
对 ObjectId
属性的注释说明了确定两个ParseObject
实例是否被视为相等的条件:
Parse.ParseObject.ClassName 和 Parse.ParseObject.ObjectId 的组合唯一标识应用程序中的对象。
因此,如果 ClassName 和 ObjectId 属性相等,则两个实例相等:
var my1 = MyParseObject.Get<ParseObject>("MyRelation");
var my2 = MyOtherParseObject.Get<ParseObject>("MyRelation");
return my1.ObjectId == my2.ObjectId && my1.ClassName == my2.ClassName;
但是,您不必手动执行此操作,而是找到了他们提供的方法:
return MyParseObject.Get<ParseObject>("MyRelation")
.HasSameId(MyOtherParseObject.Get<ParseObject>("MyRelation"));
来自 HasSameId 文档:
这是一个帮助程序函数,用于检查两个 ParseObject 是否指向云中的同一对象。
它在内部所做的(还有其他东西,但这是比较部分(:
return other != null
&& object.Equals((object) this.ClassName, (object) other.ClassName)
&& object.Equals((object) this.ObjectId, (object) other.ObjectId);
关于使用==
符号的原始代码的说明...
如果 ParseObject
类重载了 ==
运算符并指定它应该比较 ClassName 和 ObjectId,那么您的原始代码就可以工作了。
由于它们没有重载该运算符,并且==
运算符的默认行为是进行引用比较,并且MyParseObject.Get<ParseObject>
和MyOtherParseObject.Get<ParseObject>
在技术上是两个不同的对象,因此它返回了false
。
没
关系,我已经找到了答案。下面的语句工作正常。
MyParseObject.Get<ParseObject>("MyRelation").HasSameId(MyOtherParseObject.Get<ParseObject>("MyRelation"))