2015-05-21 3 views
0

Мне удается записать диск в двоичном формате на диск. Но мне не удается записать данные в формате XML. Я читал, что это должно быть возможно, но здесь нет образца кода или документации.Как сохранить список собственных классов в формате plist в формате XML с использованием NSKeyedArchiver (или другой механики)?

Код для хранения, которая работает:

var listofbookmarks = [Bookmark]() // <- needed to create a mutable array instance 
listofbookmarks.append(Bookmark(name: "myname", position: "100")) 

let fileManager = NSFileManager.defaultManager() 

if let directories = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory,NSSearchPathDomainMask.AllDomainsMask, true) as? [String] { 
    if !directories.isEmpty { 
     let plistpath = directories[0].stringByAppendingPathComponent("BookmarkArray.plist") 
     if !fileManager.fileExistsAtPath(plistpath) { 
      // HOWTO TO STORE IN XML ? 
      NSKeyedArchiver.archiveRootObject(listofbookmarks, toFile: plistpath) 

      println(plistpath); 
     } 
    } 
} 

ответ

2

Предполагая, что ваш класс Bookmark перенимает протокол NSCoding, все, что вам нужно сделать, это установить ваш NSKeyedArchiver outputFormat к NSPropertyListFormat.XMLFormat_v1_0:

Заменить

NSKeyedArchiver.archiveRootObject(listofbookmarks, toFile: plistpath) 

с

let archivedData = NSMutableData() 
let archiver = NSKeyedArchiver(forWritingWithMutableData: archivedData) 
archiver.outputFormat = NSPropertyListFormat.XMLFormat_v1_0 
archiver.encodeObject(listofbookmarks) 
archiver.finishEncoding() 
archivedData.writeToFile(plistpath, atomically: true) 
+0

Большое спасибо за помощь. Могу ли я задать дополнительный вопрос? Как читать то же самое обратно в [Bookmark]? –

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

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