2013-02-12 4 views
0

Я в настоящее время пытается, чтобы сделать викторину на iphone, поэтому я увидел учебник, но, похоже, xcode не понимает мой plist или что-то еще: мои ярлыки пустые, когда я запускаю его: in мой .m-файл:Извлечь информацию из plist

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view. 

questionNumber = 0; 
NSString * path = [[NSBundle mainBundle] pathForResource:@"Propriety List" ofType:@"plist"]; 
if (path) { 
NSDictionary *tempDict = [[NSDictionary alloc] initWithContentsOfFile: path]; 
self.Question = [tempDict objectForKey:@"Root"];} 
currentQuestion = -1; 
} 


-(void) showNextQuestion { 
currentQuestion++; 
if (currentQuestion < [self.Question count]) { 
    NSDictionary *nextquestion = [self.Question objectAtIndex:currentQuestion]; 
    self.Answear = [nextquestion objectForKey:@"QuestionAnswear"]; 
    self.labelQuestionTitle.text = [nextquestion objectForKey:@"QuestionTitle"]; 
    self.labelAnswearA.text = [nextquestion objectForKey:@"A"]; 
    self.labelAnswearB.text = [nextquestion objectForKey:@"B"]; 
    self.labelAnswearC.text = [nextquestion objectForKey:@"C"]; 
    self.labelAnswearD.text = [nextquestion objectForKey:@"D"]; 
    self.labelAnswearE.text = [nextquestion objectForKey:@"E"]; 
    } 
else { 
    // Game over 
    } 
} 


- (IBAction)buttonPressedA:(id)sender{ 
if ([self.Answear isEqualToString:@"A"]) { 
    numCorrect++; 
    NSLog(@"%d", numCorrect); 

} 

Конечно, я только что надел соответствующие коды, а не все. Может кто-нибудь помочь пожалуйста ??

+0

Что вы можете получить, если вы зарегистрируете tempDict? – rdelmar

+0

Как я могу это сделать? (Спасибо за быстрый ответ!) – lea51294

+0

NSLog (@ "% @", tempDict); – rdelmar

ответ

0

Вот мой checkForPlist метод возвращает BOOL и заполняет NSDictionary если PLIST существует так может стоить работы:

-(BOOL) checkForPlist 
{ 
    NSString *errorDesc = nil; 
    NSPropertyListFormat format; 
    NSString *plistPath; 
    NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                   NSUserDomainMask, YES) objectAtIndex:0]; 
    plistPath = [rootPath stringByAppendingPathComponent:@"TestPlist.plist"]; 
    if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath]) { 
     plistPath = [[NSBundle mainBundle] pathForResource:@"TestPlist" ofType:@"plist"]; 
    } 
    NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath]; 
    self.plistDictionary = (NSMutableDictionary *)[NSPropertyListSerialization 
              propertyListFromData:plistXML 
              mutabilityOption:NSPropertyListMutableContainersAndLeaves 
              format:&format 
              errorDescription:&errorDesc]; 
    if (!self.plistDictionary) { 
     NSLog(@"Error reading plist: %@, format: %d", errorDesc, format); 
     return NO; 
    } 
    else 
    { 
     NSLog(@"Plist exists - %@", [self.plistDictionary objectForKey:@"LastUpdated"]); 
     return YES; 
    } 
} 

Позвольте мне знать, если это помогает!

+0

Что мне нужно положить в файл .h? (извините, я уверен, что это очевидно для вас, но я действительно только начал это делать) – lea51294

+0

Нет проблем - вам нужно объявить NSDictionary в вашем .h файле plistDictionary. Все остальное объявлено в рамках этого метода и не нужно за его пределами. – TiernanKennedy

+0

Также я бы пропустил пробелы в вашем имени файла plist - никогда не было хорошей практики! – TiernanKennedy

Смежные вопросы