我有一個Place
對象的數組。每個Place
對象都有一個name
和code
屬性,都是字符串。每個Place
對象已具有code
,但我需要從服務器中查找name
屬性。我找回2個數組:一個包含名稱,其他代碼。這些陣列是這樣排列的,以使nameArray
中某個索引處的name
與codeArray
的相同索引處的code
完全對應。最快的方法來比較/設置字符串
我已被循環通過Place
對象數組,然後檢查,看是否code
屬性爲Place
是一樣的,在codeArray
當前索引。如果是,我設置Place
的name
由nameArray
使用相同指數:
for(int i = 0; i < [placesArray count]; i++)
{
for(int j = 0; j < [codeArray count]; j++) {
if([[[placesArray objectAtIndex:i] code] isEqualToString:[codeArray objectAtIndex:j]]) {
[[placesArray objectAtIndex:i] setName:[nameArray objectAtIndex:j]];
}
}
}
這工作,但不是非常快 - 它需要30秒,通過1000+的地方循環。
有沒有更快的方法?
我已經介紹了這一點,並且看到'isEqualToString:'被調用了很多。我已經嘗試過您的解決方案,並且性能提高了約96%。你搖滾安德魯。 – colby 2012-02-07 18:26:58