c# - 比较 Parse.com c# 中的关系

标签 c# parse-platform

我想比较 ParseObject 上的两个关系,并确定它们是否相等,最好不要在关系上调用 fetch() 。我尝试过这样做:

MyParseObject.Get<ParseObject>("MyRelation") == MyOtherParseObject.Get<ParseObject>("MyRelation")

但是这不起作用。我尝试在谷歌上搜索,但没有找到我的问题的答案。是否可以在不获取数据的情况下比较这些关系?

任何帮助将不胜感激。谢谢。

最佳答案

我以前没有使用过这个,但我想我还是应该看看文档和代码。

ObjectId的评论属性规定了确定两个 ParseObject 是否存在的标准实例被认为是相等的:

The combination of a Parse.ParseObject.ClassName and an Parse.ParseObject.ObjectId uniquely identifies an object in your application.

因此,如果 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文档:

A helper function for checking whether two ParseObjects point to the same object in the cloud.

这是它内部所做的事情(还有其他东西,但这是比较部分):

return other != null
    && object.Equals((object) this.ClassName, (object) other.ClassName)
    && object.Equals((object) this.ObjectId, (object) other.ObjectId);

关于使用 == 的原始代码的注释签名...

如果ParseObject类(class)有overloaded the == operator并指定它应该比较 ClassName 和 ObjectId,那么您的原始代码就可以工作。

因为他们没有重载该运算符,并且 == 的默认行为运算符是做引用比较,MyParseObject.Get<ParseObject>MyOtherParseObject.Get<ParseObject>从技术上讲是两个不同的对象,它返回 false .

关于c# - 比较 Parse.com c# 中的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27559016/

相关文章:

c# - 如何使用 Entity Framework 检索插入实体的 ID?

c# - EntityFramework 不创建表

iOS 解析 GeoPoints 和 MapBox 形状

Swift:UICollectionView 和 UIImage fatal error :数组索引超出范围

c# - 使用 Entity Framework 4.0 更新分离的实体实例

c# - 关于在 C# 中运行时关闭窗体

c# - 在 C# 中获取/设置文件所有者

multithreading - 我怎么知道多线程何时完成(Swift)

android - Parse.com 推送通知问题。取消订阅不起作用,仍在接收推送通知。(Android)

ios - 使用双击的投票系统