2010-08-16 17 views
5

मैं एक plist जो इस प्रकार है है:पहुँच plist डेटा

<dict> 
    <key>11231654</key> 
    <array> 
     <string>hello</string> 
     <string>goodbye</string> 
    </array> 
    <key>78978976</key> 
    <array> 
     <string>ok</string> 
    <string>cancel</string> 
    </array> 

मैं इस का उपयोग कर plist लोड कर दिया है:

NSString *path = [[NSBundle mainBundle] pathForResource: 
        @"data" ofType:@"plist"]; 
    // Build the array from the plist 
    NSMutableArray *array3 = [[NSMutableArray alloc] initWithContentsOfFile:path]; 

मैं के प्रत्येक तत्व कैसे उपयोग कर सकते हैं मेरे plist? मैं plist में एक मिलान कुंजी और अपने बच्चे के साथ खोज करने के लिए खोजना चाहता हूँ। मैं यह कैसे कर सकता हूँ? कोई उपाय?

पहले से ही थक्स!

उत्तर

8

Arrays अनुक्रमित हैं।

id someObject = [array objectAtIndex:0]; 

आप ऑब्जेक्ट प्रकार जानते हैं, तो आप इसे इस तरह कर सकता है::

NSString *myString = [array objectAtIndex:0]; 

आप एक NSArray में पहली वस्तु का उपयोग करना चाहता था, तो आप निम्न कार्य था संपादित करें: आपको अपने डेटा के लिए NSDictionary का उपयोग करने की आवश्यकता है, यह ध्यान दें कि यह <dict> टैग से शुरू होता है, न कि <array> टैग (हालांकि मानों के रूप में सरणी हैं)।

NSString *path = [[NSBundle mainBundle] pathForResource: 
       @"data" ofType:@"plist"]; 
// Build the array from the plist 
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path]; 

NSArray *value = [dict valueForKey:@"11231654"]; 

अब आप जो कुछ भी अपनी सरणी के साथ करना चाहते हैं वह कर सकते हैं।

+0

मैं इंडेक्स मूल्य का उपयोग कैसे कर सकता हूं? 11231654 इस उदाहरण में – Stefan

+0

उस स्थिति में, आपका डेटा 'NSDictionary' में लोड किया जाना चाहिए। मैं अपना जवाब अपडेट करूंगा। –

1

Here एक चर्चा का एक लिंक है जो आपके डेटा तक पहुंचने का एक बहुत अच्छा उदाहरण प्रदान करता है और कुछ परिस्थितियों में किस प्रकार की स्टोरेज योजनाएं अधिक फायदेमंद होंगी। @ जेफ केली का समाधान लक्ष्य पर है, मैंने सोचा कि यह प्रश्न अतिरिक्त संसाधन जोड़ देगा। उम्मीद है की यह मदद करेगा!

1

इस तरह आप शब्दकोश के बजाय सरणी plist

plist screenshot

सेट जड़ बनाने के लिए की जरूरत है, यह आप अनुक्रम में परिणाम देगा। कोड की रेखाओं के नीचे आप पूर्ण plist ला सकते हैं।

NSString *pathOfPlist = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"]; 
arrPlistValue = [[NSArray alloc]initWithContentsOfFile:path]; 
NSLog(@"Plist Value : %@",arrPlistValue); 

उसके बाद आप नीचे दिए गए कोड के साथ किसी भी विशिष्ट सामग्री लाने कर सकते हैं:

NSString *strName = [[arrTempValue objectAtIndex:0] objectForKey:@"name"]; 
NSString *strImage = [[arrTempValue objectAtIndex:0] objectForKey:@"image"]; 
int idValue = [[[arrTempValue objectAtIndex:0] objectForKey:@"id"] integerValue]; 
BOOL isSubCat = [[[arrTempValue objectAtIndex:0] objectForKey:@"isSubCategory"] boolValue]; 
इस कोड को आप plist से पूर्णांक, स्ट्रिंग, बूलियन लाने कर सकते हैं

।!

संबंधित मुद्दे