2016-12-10 3 views
2

Я следил за множеством вопросов здесь, но ничего не работает.Прочитайте plist in swift 3 playground

Я использую Swift3 в Playground. Работает на El Capitan и Xcode 8.1. У меня есть plist с корнем как Dictionary, содержащим одно значение Int и два 2D массива интов.

plist

Каждый вопрос я следую не похоже на работу ближе у меня есть на детской площадке, чтобы не возвращать ошибки, но это, кажется, работает постоянно (значок спиннинг никогда не останавливается).

мой текущий код, я считаю самым близким, которого я достиг.

import Foundation 
if let path = Bundle.main.path(forResource: "levelList", ofType: "plist") { 
    let plistXML = FileManager.default.contents(atPath: path)! 

    let mydata = try! PropertyListSerialization.propertyList(from: plistXML, options: [], format: nil) as! [String:Any] 
} 

другие варианты Я попытался из предыдущих ответов переполнения стека в аналогичном контексте.

let mydata = Dictionary(fromPropertyList: path, format: "XML") as! [String: Any] 
****** 
let mydata = Dictionary(contentsOf: path) as? [String: Any] 

Данные были добавлены в папку ресурсов правильно, так как связанный вопрос дал инструкции. Я перезапустил Xcode (и mac), как это было предложено в комментариях. Через некоторое время выполнение завершилось с ошибкой «error: Execution была прервана причина exc_bad_access (code = 1 address = 0x0)» После очередного перезапуска кода работает. Как бы я извлечь данные в массив в стрижа, так как на данный момент площадка показывает [ «Уровень 2»: [ «Col»: < _NS_array0 0x7fc620d091a0> (

+0

http://stackoverflow.com/questions/28956211/swift-could-not-read-local-plist-file-to-dictionary-in-a-playground –

ответ

0

чтобы, наконец, получить программу, работающую я.

devices = NSArray(contentsOfFile: path) as! [AnyObject] 

Вопрос с детской площадкой работает непрерывно была решена путем идти к деятельности МО nitor и force, покидая процесс с именем com.apple.coresimulator, который был идентифицирован как не реагирующий. После этого игровая площадка запустилась мгновенно.

1

Вы используете неправильный API, вам нужно загрузить Data, а не что-то в файловой системе.

if let url = Bundle.main.url(forResource: "levelList", withExtension: "plist"), 
    let plistData = try? Data(contentsOf: url) { 
     let mydata = try! PropertyListSerialization.propertyList(from: plistData, options: [], format: nil) as! [String:Any] 
} 

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

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