2012-06-06 4 views
1

Я пытаюсь использовать кодыNSKeyedUnarchiver unarchiveObjectWithFile причиной аварии

-(bool)checIfWorksOnJailbreak; 
{ 

    NSString *s = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Info.plist"]; 

    NSLog(@"%@",s); 

    if([[NSFileManager defaultManager] fileExistsAtPath:s]) { 


     NSDictionary *plistDictionary = (NSDictionary*)[NSKeyedUnarchiver unarchiveObjectWithFile:s]; 


     NSString *valueString = [plistDictionary objectForKey:@"SigerIdentity"]; 
     if([valueString isEqualToString:@"Apple OS Application Signing"]) 
      return true; 
     else 
      return false; 
    } 

    return false; 

} 

всегда вызывают ошибки

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '*** -[NSKeyedUnarchiver initForReadingWithData:]: 
incomprehensible archive version (-1)' 

на линии

NSDictionary *plistDictionary = (NSDictionary*)[NSKeyedUnarchiver unarchiveObjectWithFile:s]; 

Добро пожаловать любой комментарий

+0

Почему это происходит с понижением? Это законный вопрос. – Sean

ответ

3

NSKeyedUnarchiverNSKeyedArchiver) не предназначены для кодирования и декодирования. Вместо этого они используются для сериализации и десериализации объектов, реализующих протокол NSCoding. Чтобы прочитать данные plist в словаре, вы должны использовать:

NSDictionary *plistDictionary = [NSDictionary dictionaryWithContentsOfFile:s]; 
Смежные вопросы