2012-01-05 19 views
0

なぜnaam出力(NULL)ですか? TEMPですのでPlistの問題を読む

- (id) init { 

self = [super init]; 
if (self) { 
    NSString *errorDesc = nil; 
    NSPropertyListFormat format; 
    NSString *plistPath; 
    NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                   NSUserDomainMask, YES) objectAtIndex:0]; 
    plistPath = [rootPath stringByAppendingPathComponent:@"Data.plist"]; 
    NSLog(@"path: %@",plistPath); 
    if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath]) { 
     plistPath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"]; 
    } 
    NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath]; 

    NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization 
              propertyListFromData:plistXML 
              mutabilityOption:NSPropertyListMutableContainersAndLeaves 
              format:&format 
              errorDescription:&errorDesc]; 
     NSLog(@"temp: %@",temp); 
    if (!temp) { 
     NSLog(@"Error reading plist: %@, format: %d", errorDesc, format); 
    } 
    self.personName = [temp objectForKey:@"Name"]; 
    NSLog(@"NAAM:%@",[temp objectForKey:@"Name"]); 
    self.phoneNumbers = [NSMutableArray arrayWithArray:[temp objectForKey:@"Phones"]]; 


} 
return self;} 

the output

答えて

1

:メソッドここ enter image description here

です:(申し訳ありませんで、これは基本的なものですけど、私はプレースメントリストに新しいです)

これはplistのです1つのキーのみを含む辞書:@ "ルート"。あなたは、内側の辞書にオブジェクトを探しています:[[temp objectForKey:@"Root"] objectForKey:@"Name"]

+0

ありがとうございました。それは動作します。私はどのようにして電話機の項目1を読むことができますか? – Foo

1

これを行うPhonesから最初の電話を踏むために

NSLog(@"NAAM: %@", [temp valueForKeyPath:@"Root.Name"]); 

を試してみてください。

NSDictionary *root = [temp valueForKey:@"Root"]; 
[[root valueForKey:@"Phones"] objectAtIndex:0]; 
+0

ありがとう!どのようにしてROOTを抽出した後、電話機の項目1を読み取ることができますか? – Foo

1

最初ROOTを抽出してみます。

NSDictionary* root=[temp objectForKey:@"Root"]; 
NSLog(@"NAAM:%@",[root objectForKey:@"Name"]); 
+0

ありがとう!どのようにしてROOTを抽出した後、電話機の項目1を読み取ることができますか? – Foo

+0

これは次のようなものです: 'NSArray * phones = [root objectForKey:@" Phones "]; NSString * phone1 = [phones objectAtIndex:0]; ' –

0

私の "Words.plist"

<dict> 
    <key>Root</key> 
    <array> 
     <string>sunday</string> 
     <string>monday</string> 
     <integer>44</integer> 
    </array> 
</dict> 


NSString *StringsFromPList = [[NSBundle mainBundle] bundlePath]; 
NSString *itemPositionPlistLocation = [StringsFromPList stringByAppendingPathComponent:@"Words.plist"]; 
_myDictionary= [[NSDictionary alloc] initWithContentsOfFile:itemPositionPlistLocation]; 
NSArray * items = [_myDictionary objectForKey:@"Root"]; 
NSLog(@"%@", items); 

が、それは少し役に立てば幸い:)

関連する問題