Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 比较两个数组的对象索引_Ios_Iphone_Objective C_Comparison_Nsarray - Fatal编程技术网

Ios 比较两个数组的对象索引

Ios 比较两个数组的对象索引,ios,iphone,objective-c,comparison,nsarray,Ios,Iphone,Objective C,Comparison,Nsarray,我的问题是 我有从XML文件中提取并解析然后存储在数组中的数据 该数据每60分钟更新一次 现在我创建了第二个数组,它分析相同的数据,但每周只分析一次 现在的情况是,我有一个数组,每60分钟更新一次,另一个数组每7天更新一次 这样做的原因是,我正在做一个团队表格,我想检查一个团队在排行榜上的排名是上升还是下降 所以我的第一个问题得到解决,我有两个数组,其中一个包含最新数据,另一个包含一周前的数据 我的第二个问题是如何比较这些对象和索引?每个对象都有许多属性,如.name或.teamid 有人能给我

我的问题是

我有从XML文件中提取并解析然后存储在数组中的数据

该数据每60分钟更新一次

现在我创建了第二个数组,它分析相同的数据,但每周只分析一次

现在的情况是,我有一个数组,每60分钟更新一次,另一个数组每7天更新一次

这样做的原因是,我正在做一个团队表格,我想检查一个团队在排行榜上的排名是上升还是下降

所以我的第一个问题得到解决,我有两个数组,其中一个包含最新数据,另一个包含一周前的数据

我的第二个问题是如何比较这些对象和索引?每个对象都有许多属性,如.name或.teamid

有人能给我一个关于如何比较ArrayA Object.name和ArrayB.name的示例代码吗


非常感谢你

你的问题令人困惑;显然,您已经编写了一个应用程序,它能够从XML文件中提取数据,解析数据,创建数组,并按照时间表执行所有这些操作,但不知道如何比较两个项目?听起来我误解了你的问题!所以这里有一个猜测,也许会有帮助:

Cocoa有一种对象相等的模式——两种方法是相等的:hash和hash一起提供了一种标准化的方法来测试两个对象实例是否相等,不管这意味着对象代表什么

这些方法由所有标准类提供,因此您可以测试两个NSString实例是否表示相同的字符串等。对于NSArray之类的集合类,其isEqual:方法通过调用其isEqual:方法等来成对比较两个数组中的元素

基类NSObject提供了一个默认实现,但由于它不知道相等对特定类意味着什么,因此它的实现非常基本——两个对象是相等的,当且仅当它们是完全相同的对象时,即[a isEqual:a]为是,其他任何对象都不相等

因此,您需要提供一个isEqual:这是类的一个重要哈希对,它实现了类的相等性——它可能是根据类的一些属性定义的,比如您提到的名称,并将调用它们的isEqual:方法

当然,如果类的相等性仅仅基于它的一个属性,例如name,那么实现isEqual:&hash就很简单了——这些实现只是在该属性上调用相同的方法。在这种情况下,您甚至不需要自己实现该对,您可以访问该属性并直接对其进行比较。比如:

NSUInteger indexOfInterest = ...;
MyClass *objectA = arrayA[indexOfInterest];
MyClass *objectB = arrayB[indexOfInterest];
BOOL itemsAreEqual = [objectA.name isEqual:objectB.name];
如果属性不是对象类型,而是某些基本类型,如int,则只需使用标准相等运算符:

BOOL itemsAreEqual = objectA.name == objectB.name;

阅读:来自苹果的Cocoa核心竞争力。

你当前的代码是什么样子的,你有什么问题?我没有最新的代码,我只需要比较索引中的对象,我不知道如何做一旦你自己尝试了一些东西,仍然有问题,从头开始!