2009-04-07 2 views
0

Надеюсь, это название достаточно ясно. В любом случае, мне кажется:Как сериализовать объект в файл с помощью NSKeyedArchiver в формате NSPropertyListXMLFormat_v1_0?

[NSKeyedArchiver archiveRootObject:rootObject toFile:path]; 

ограничивается NSPropertyListBinaryFormat_v1_0.

Мне нужен формат для чтения человеком [so xml]. Если вы заинтересованы, это часть проекта я в конечном итоге положить на GitHub с блоге о «Как Unit Test GPS Applications»

:-)

ответ

6

Вы должны использовать NSPropertyListSerialization для преобразования Это. В принципе, если предположить, объект, который вы сериализацию называются myObject и конечный файл хранится в myPath, вы бы сериализацию его XML, используя что-то вроде фрагмента следующего кода:

NSString *error = nil; 
NSData *mySerializedObject = [NSKeyedArchiver archivedDataWithRootObject:myObject]; 
NSData *xmlData = [NSPropertyListSerialization dataFromPropertyList:mySerializedObject 
         format:NSPropertyListXMLFormat_v1_0 
         errorDescription:&error]: 
if(xmlData) { 
    [xmlData writeToFile:myPath atomically:YES]; 
} else { 
    NSLog(error); 
    [error release]; 
} 
+0

Спасибо Джейсон! Я тестирую это сейчас. –

+1

как вернуть этот объект? – Krish

6

Вместо того, чтобы использовать метод класса, попробуйте создать экземпляр NSKeyedArchiver и с помощью setOutputFormat:NSPropertyListXMLFormat_v1_0 указать формат XML. Единственным недостатком является то, что для выполнения сериализации потребуется несколько дополнительных строк кода, поскольку он просто не вернет объект NSData за один шаг.

0

Вы должны закодировать класс объектов с помощью метода - (Недействительными) encodeWithCoder (NSCoder *) кодировщик {

[coder encodeObject:name forKey:@"name"]; 
[coder encodeObject:address forKey:@"address"]; 
[coder encodeObject:position forKey:@"position"]; 

}

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

  • Нет связанных вопросов^_^