2014-03-03 25 views
-2

我的問題是...比較兩個數組的對象索引

我有從XML文件中提取並解析然後存儲在數組中的數據。

此數據每60分鐘更新一次。

現在我創建了第二個數組,分析相同的數據,但每週只有一次。

現在發生的事情是,我有一個數組每60分鐘更新一次,每7天更新一次。

原因是,我在做一個球隊的表格,我想檢查球隊在積分榜上上下移動的情況。

所以我的第一個問題就解決了,我有2個數組,其中包含一個具有最新數據的團隊,另一個具有一個星期的舊數據。

我的第二個問題是我如何比較這些對象索引?每個對象都有很多屬性,如.name或.teamid

有人能提供一個關於如何比較ArrayA Object.name與ArrayB.name的示例代碼嗎?

非常感謝。

+0

你目前的代碼是什麼樣的,你有什麼問題? – admdrew

+0

我沒有當前的代碼,我只需要比較索引中的對象我不知道該怎麼做 – user3371091

+0

一旦你自己嘗試了一些東西,仍然有問題,請回頭! – admdrew

回答

0

你的問題很混亂;顯然你已經編寫了一個應用程序,它能夠從XML文件中提取數據,解析它,創建一個數組,並按照時間表完成所有這些,但卻不知道如何比較兩個項目?這聽起來像我誤解你的問題!因此,這裏是一個猜測,也許它會幫助:

可可有對象平等的模式 - 兩種方法isEqual:hash協同工作,提供測試標準的方式兩個對象實例是否是「平等」,不管這意味着根據對象代表什麼。

由所有的標準類提供這些方法,這樣就可以測試兩種NSString實例是否表示相同的字符串等。對於集合類如NSArrayisEqual:方法通過調用其isEqual:在兩兩這兩個陣列中的元素進行比較方法等

的基類,NSObject,提供了一個默認的實現,但它無法知道什麼平等特定類意味着它的實現是非常基本的 - 兩個對象只有當它們是完全一樣的對象相等,如果和,即[a isEqual:a]YES,沒有別的。

所以,你需要提供一個isEqual:(這很重要)hash對你的類,它實現的是爲你的類平等 - 這是在它的一些性能方面可能定義,如name你提到,並會調用他們的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; 

閱讀:Object Comparison從蘋果的可可核心競爭力