2012-08-29 48 views
0

我在用Objective C方式編寫for循環方面存在疑問。我可以在傳統的C for循環中執行相同的循環,但是我正在嘗試學習Objective C。這是我的問題。
listdata是一個可變數組,它包含ofi_vc_modal_ab_user_info對象的對象,我想比較列表數據的每個電子郵件和電子郵件,直到列表數據計數並找到它的位置,並且如果找到,我想從列表數據中刪除對象。以Objective C方式編寫for循環

for (ofi_vc_modal_ab_user_info *loc_obj in listData) 
    { 
     if (strcasecmp(loc_obj->email, email) == 0) { 
      // What need to do here. 
     } 
    } 

如何繼續在這裏...感謝您的幫助:)

+0

我知道你已經有了一個可以接受的答案,但是你應該看看現在可用於大多數集合對象的'enumerate ... with block'方法。 Apple每年在WWDC上告訴我們這些結果的代碼和麪積要少得多,速度也要快得多。 –

回答

2
BOOL foundObject = NO; 
ofi_vc_modal_ab_user_info *loc_found_obj = nil; 
for (ofi_vc_modal_ab_user_info *loc_obj in listData) 
{ 
    if (strcasecmp(loc_obj->email, email) == 0) { 
     // Set your flag here 
     loc_found_obj = loc_obj; 
     foundObject = YES; 
     break; 
    } 
} 
if(foundObject) { 
// Do your stuffs as object is found 
// Your found object is in loc_found_obj 
[listData removeObject:loc_found_obj]; 
} 

我希望下面的代碼解釋你想要什麼。如果您需要更多幫助,請詳細解釋一下。

編輯:如果您使用NSMutableArray那麼你不需要索引的對象。您可以直接刪除我的編輯代碼中提到的對象。

+0

BornCoder如何刪除索引處的對象? – Newbee

+0

Ya的工作表示感謝,然後Justin如何說出錯,我在蘋果文檔中看到了類似的方法。 – Newbee

+0

你的意思是它給錯誤了嗎?它不應該給出任何錯誤。請解釋它給出了什麼樣的錯誤。 – BornCoder

6

你可以只用C的for

實際上,在使用for (e in collection)時,對您重複使用的集合進行變異是錯誤的。

+0

賈斯汀我已經像Born和Prince建議的那樣做了,它看起來適合我的情況。 – Newbee

+0

@ user1587011如果BornCoder的方法適合您,請隨時接受BornCoder的答案。 – justin

+0

@Newbee - YES! BornCoder答案是錯誤的。 – TheTiger