我的要求是,以確定(其中觸點(一個或多個)地址簿的變化以及哪些字段(S)已經改變,因爲應用程序後打開。什麼是比較兩個NSArrays和檢測的最佳方式改變
現在我有兩個NSArrays爲arrSavedContacts(包含以前的地址簿聯繫人)和arrContacts(當前地址簿中的聯繫人),這是兩個數組看起來像
arrSavedContacts
{
firstName = Gayan;
id = 224;
lastName = Udaha;
phones = (
{
label = Mobile;
value = "123456789";
}
);
},
{
firstName = Chandrananda;
id = 225;
lastName = "";
phones = (
{
label = Mobile;
value = "234567891";
}
);
},
{
firstName = Joe;
id = 228;
lastName = B8;
phones = (
{
label = Mobile;
value = "345678912";
}
);
},
個arrContacts
{
firstName = FirstName Changed;
id = 224;
lastName = Udaha;
phones = (
{
label = Mobile;
value = "123456789";
}
);
},
{
firstName = Chandrananda;
id = 225;
lastName = "";
phones = (
{
label = Mobile;
value = "345678912";
}
);
},
由於上述兩個數組,我們可以看到兩個變化,第3項被刪除,得到的firstName在第一項改變。
因爲我們可以在通訊錄中包含數千個項目,所以我的問題是,比較這兩個數組並檢測更改的項目(刪除,添加,內部字段更改)的最佳方法是什麼?
一個代碼示例是高度讚賞
你的數據結構幾乎不可能做你想做的事情。你真的需要一本字典的字典,而不是一個字典數組。外部字典應該被鍵入每個聯繫人條目的某種唯一ID。然後你可以通過鍵來關聯這兩個(保存和更改的)字典。然後你可以比較每個相應的內部詞典尋找變化。 – rmaddy
@rmaddy感謝您的想法,高度讚賞,如果你能展示一些例子 – sajaz
從'arrSavedContacts'開始。你有一個字典數組。相反,將所有字典放在字典中而不是數組中。您現有的字典將成爲字典中的值,每個聯繫人的某種唯一ID將成爲其關鍵。現在對'arrContacts'也做同樣的事情。現在,每個聯繫人在兩組數據中將具有相同的唯一ID。 – rmaddy