我想比较ParseObject上的两个关系,并确定它们是否相等,最好不要在关系上调用fetch()。我试过这样做:在Parse.com中比较关系c#
MyParseObject.Get<ParseObject>("MyRelation") == MyOtherParseObject.Get<ParseObject>("MyRelation")
但它不起作用。我试图搜索谷歌,但还没有找到我的问题的答案。是否有可能比较这些关系,而不提取他们的数据?
任何帮助将不胜感激。谢谢。
我想比较ParseObject上的两个关系,并确定它们是否相等,最好不要在关系上调用fetch()。我试过这样做:在Parse.com中比较关系c#
MyParseObject.Get<ParseObject>("MyRelation") == MyOtherParseObject.Get<ParseObject>("MyRelation")
但它不起作用。我试图搜索谷歌,但还没有找到我的问题的答案。是否有可能比较这些关系,而不提取他们的数据?
任何帮助将不胜感激。谢谢。
我以前没有用过这个,但是我想我会看看文档和代码。
用于确定是否2个ParseObject
实例在ObjectId
属性状态的标准的注释被视为相等:
一个Parse.ParseObject.ClassName和Parse.ParseObject.ObjectId的组合唯一地标识一个对象你的申请。
因此,如果类名和的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文档:
帮助函数用于检查两个ParseObjects是否指向云中的同一个对象。
这里就是它的内部做(还有其他的东西太多,但这是比较部分):
return other != null
&& object.Equals((object) this.ClassName, (object) other.ClassName)
&& object.Equals((object) this.ObjectId, (object) other.ObjectId);
关于最近使用的==
标志的原代码的说明...
如果ParseObject
类有overloaded the ==
operator并指定它应该比较ClassName和ObjectId,那么您的原始代码将工作。
因为他们没有重载运营商,而运营商==
的默认行为是做一个参考比较,并MyParseObject.Get<ParseObject>
和MyOtherParseObject.Get<ParseObject>
在技术上是两个不同的对象,它返回false
。
没关系,我找到了我的答案。下面的声明工作正常。
MyParseObject.Get<ParseObject>("MyRelation").HasSameId(MyOtherParseObject.Get<ParseObject>("MyRelation"))