2010-01-14 13 views
5

से स्ट्रिंग मान रही मैं एक NSArrayController और मैं जब मैं selectedObjects हो और यह रिटर्नएक NSArray

(
    "This is still a work in progress " 
) 

valueForKey:@"Name" के मूल्य के साथ एक NSString बना सकते हैं और सभी मैं करना चाहता हूँ में पाठ है "" मुझे यह कैसे मिलेगा? भी, यह मेरा कोड:

NSArray *arrayWithSelectedObjects = [[NSArray alloc] initWithArray:[arrayController selectedObjects]]; 

NSString *nameFromArray = [NSString stringWithFormat:@"%@", [arrayWithSelectedObjects valueForKey:@"Name"]]; 
NSLog(@"%@", nameFromArray); 

संपादित: मैं भी सरणी

उत्तर

16

जब आप एक सरणी पर valueForKey: कहते हैं, यह सरणी में निहित तत्वों में से प्रत्येक पर valueForKey: कॉल में अन्य तार है, और किसी भी nil मानों के लिए NSNull को प्रतिस्थापित करने, उन मानों को एक नई सरणी में वापस कर देता है। नियंत्रक से selectedObjects सरणी को डुप्लिकेट करने की कोई आवश्यकता नहीं है क्योंकि यह वैसे भी अपरिवर्तनीय है।

आप अपने एरे नियंत्रक के चयनित वस्तुओं में एक से अधिक ऑब्जेक्ट है, और आप चयनित वस्तुओं में सभी आइटम का नाम कुंजी का मान देखना चाहते हैं, बस कार्य करें:


NSArray *names = [[arrayController selectedObjects] valueForKey:@"name"]; 

for (id name in names) 
    NSLog (@"%@", name); 
बेशक

, तो आप कर सकते थे अगर तुमने किया था एक बार में उन सब को प्रिंट आउट:

NSLog (@"%@", [[arrayController selectedObjects] valueForKey:@"name"]); 

selectedObjects सरणी में केवल एक ही तत्व है, और आप valueForKey: कॉल करते हैं, यह अभी भी एक सरणी वापस आ जाएगी, लेकिन यह केवल के प्रमुख के मूल्य में शामिल होंगे में एकमात्र तत्व सरणी। आप इसे lastObject के साथ संदर्भित कर सकते हैं।

NSString *theName = [[[arrayController selectedObjects] valueForKey:@"name"] lastObject]; 
NSLog (@"%@", theName);