1

コードを使用しようとしています

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

コメント歓迎

4

1 に答える 1

3

NSKeyedUnarchiver(およびNSKeyedArchiver) は、plist のエンコードおよびデコード用ではありません。NSCoding代わりに、プロトコルを実装するオブジェクトをシリアライズおよびデシリアライズするために使用されます。plist データを辞書に読み込むには、代わりに次を使用する必要があります。

NSDictionary *plistDictionary = [NSDictionary dictionaryWithContentsOfFile:s];
于 2012-06-06T03:24:26.753 に答える