2009-02-14 6 views
6

में एक्स लूप में एक्स के अंतिम पुनरावृत्ति पर मैं कैसे बताना चाहता हूं कि मेरे पास (कुछ एरे में NSObject * obj) {} वाक्यविन्यास का उपयोग करने वाला लूप है। क्या यह बताने का एक आसान तरीका है कि क्या मैं लूप के अंतिम पुनरावृत्ति पर हूं (यानी। [कुछ आरे गिनती] का उपयोग किए बिना)ऑब्जेक्टिव-सी

उत्तर

15

शायद यह काम करेगा?

if (obj == [ someArray lastObject ]) { 
    // ... 
} 
14

आप NSArray#lastObject का उपयोग करता है, तो obj[NSArray lastObject] के बराबर है निर्धारित करने के लिए कर सकता है।

for (NSObject *obj in someArray) { 
    if ([someArray lastObject] == obj) { 
     NSLog(@"Last iteration"); 
    } 
} 
5

बल्कि हर यात्रा पर सरणी में कॉल की तुलना में, यह बेहतर सरणी में पिछले वस्तु कैश करने के लिए हो सकता है:

NSObject *lastObject = [someArray lastObject]; 
for (NSObject *obj in someArray) { 

    // Loop code 

    if (obj == lastObject) { 
     // do what you want for the last array item 
    } 
} 
+0

तुम अब भी पाश में विधि कॉल कर रहे हैं। मुझे लगता है कि आप पहली दो लाइनों को स्वैप करना चाहते थे। एक और छोटा टाइपो: – gclj5

+0

में "अपरकेस 'एफ' में अपरकेस 'एफ' यह इंगित करने के लिए धन्यवाद - मैं इसे संपादित करूंगा। – Abizern