2010-08-16 21 views
5

ben böyle giderse bir plist var:erişim Plist veri

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

ben bu kullanarak plist yük ettik:

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

nasıl ben her bir öğesini erişebilir benim plist? Anahtarda eşleşen bir anahtar aramak ve onun çocuğunu aramak istiyorum. bunu nasıl yapabilirim? herhangi bir öneri?

önceden!

cevap

8

Diziler dizine eklenir. Eğer nesne türünü biliyorsanız

id someObject = [array objectAtIndex:0]; 

, bunu şöyle yapabilirsiniz::

NSString *myString = [array objectAtIndex:0]; 

bir NSArray ilk nesneye erişmek istiyorsa, aşağıdaki yaparım EDIT: Sahip olduğunuz veriler için bir NSDictionary kullanmanız gerekir - bir <array> etiketiyle değil, <dict> etiketi ile başladığını unutmayın (değerler olsa da diziler vardır).

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"]; 

Artık dizinizle istediğiniz her şeyi yapabilirsiniz.

+0

Dizin değerine nasıl erişebilirim? Bu örnekte 11231654 – Stefan

+0

Bu durumda, verileriniz bir 'NSDictionary' içine yüklenmelidir. Cevabımı güncelleyeceğim. –

1

Here, verilerinize nasıl erişileceğine ve hangi tür depolama planlarının belirli koşullar altında daha yararlı olabileceğine ilişkin çok iyi bir örnek sağlayan bir tartışmanın bir bağlantısıdır. @Jeff Kelley'in çözümü hedefte, bu sorunun ek bir kaynak ekleyeceğini düşündüm. Bu yardımcı olur umarım! yerine sözlüğün diziye plist

plist screenshot

Seti kökü oluşturmak için ne

1

budur, bu size sırayla sonuçlar verecektir. Aşağıdaki kod satırlarıyla tam plist'i alabilirsiniz. Bundan sonra

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

aşağıdaki kodu ile herhangi bir spesifik içerik getirebilir: Eğer plist dan integer, string boolean getirebilir Bu kod ile

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]; 

.!