2017-04-20 1 views
0

Hier ist mein Problem.Holen Sie sich Details aus Plist-Datei mit Objective-c

Ich kann nicht herausfinden, wie Sie auf die Taste "Details" auf der gleichen Ebene wie der "Name" -Taste einmal suchen nach einem bestimmten Namen Schlüssel zugreifen. Vielleicht vermisse ich etwas?

Ich weiß, dass Sie "Details" über [dict objectForKey:@"Details"] bekommen können, aber ich bin mir nicht sicher, wie man den auf den gleichen Niveaus wie das, nach dem gesucht wurde, bekommt.

Code:

- (IBAction)ScoringButtonView:(id)sender { 
    ScoringViewController *svController = [[ScoringViewController alloc] initWithNibName:@"ScoringView" bundle:[NSBundle mainBundle]]; 
    [self.navigationController pushViewController:svController animated:YES]; 

    UIButton *scoringButton = (UIButton*)sender; 
    NSLog(@"Scoring is %@ ", scoringButton.currentTitle); 
    svController.ScoringName = scoringButton.currentTitle; 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Scoring" ofType:@"plist"]; 
    NSArray *plistData = [NSArray arrayWithContentsOfFile:path]; 
    for (NSDictionary *dict in plistData) { 
     if ([[dict objectForKey:@"Name"] isEqualToString:scoringButton.currentTitle]) { 
      NSLog(@"Scoring == %@ ", scoringButton.currentTitle); 
//   svController.ScoringInfo = 
     } 
    } 

plist:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
    <array> 
     <dict> 
      <key>Name</key> 
      <string>Standard</string> 
      <key>Details</key> 
      <string>dagsdfgds</string> 
     </dict> 
     <dict> 
      <key>Name</key> 
      <string>Advanced</string> 
      <key>Details</key> 
      <string>gfdsgdfsgdsfg</string> 
     </dict> 
    </array> 
</plist> 
+0

gut funktionieren, wenn Sie den Namen mit 'get [dict objectForKey: @ "Name"] ', wie würdest du die Details bekommen? – Willeke

+2

Womit haben Sie Probleme? Sie wissen bereits, wie Sie auf den '@" Name "' Schlüssel zugreifen können. Die '@" Details "-Taste ist genau das Gleiche. – rmaddy

+0

@rmaddy Ja, richtig. Ich bin mir nur nicht sicher, wie man die "Details" auf die gleiche Ebene wie den "Namen" bringt, den ich gesucht habe. – Number1

Antwort

0

Ich bin nicht sicher, was die Verwirrung. Sie wissen bereits, wie Sie den Wert für den Schlüssel Name erhalten. Erhalten Sie den Wert für die Details Schlüssel ist das gleiche:

for (NSDictionary *dict in plistData) { 
    if ([dict[@"Name"] isEqualToString:scoringButton.currentTitle]) { 
     NSString *details = dict[@"Details"]; 
    } 
} 

Hinweis, wie ich moderne Objective-C-Syntax anstelle der alten Stil Verwendung von objectForKey: verwendet.

0

// Diese Methode sollte

// Zählverfahren ist besser als for-Schleife

NSString *filePath = [[NSBundle mainBundle] pathForResource:@“LanguageList” ofType:@"json"]; 
    NSString *myJSON = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSJSONReadingAllowFragments error:NULL]; 
    NSError *error = nil; 
    NSDictionary * dict = [NSJSONSerialization JSONObjectWithData:[myJSON dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&error]; 


    [dict[@"result"] enumerateObjectsUsingBlock:^(id _Nonnull objList, NSUInteger idx, BOOL * _Nonnull stop) { 

      NSLog(@“Values %@”,obj); 
      *stop = YES; 

     } 
    }]; 
Verwandte Themen