在 swift 3 playground 阅读 plist

Read plist in swift 3 playground

我已经关注了这里的大量问题,但似乎没有任何效果。

我在 Playground 中使用 Swift3。 运行 在 El Capitan 和 Xcode 8.1。 我有一个 plist,根是 Dictionary,包含一个 Int 值和两个二维 Int 数组。

plist

我关注的每个问题似乎都不奏效,我得到的最接近的问题是 playground 没有 return 错误,但它似乎一直 运行(旋转的图标永远不会停止)。

我目前的代码,我相信这是我实现的最接近的代码。

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 was interrupted reason exc_bad_access (code=1 address=0x0)" 再次重启后代码工作。我如何将数据提取到 swift 中的数组中,因为此时 playground 正在显示 ["Level 2":["Col": <_NS_array0 0x7fc620d091a0>(

您使用了错误的 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]
}

为了最终让我使用的程序正常工作。

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

游乐场持续 运行 的问题已通过 activity 监控并强制退出名为 com.apple.coresimulator 的进程解决,该进程被识别为没有响应。完成此操作后,游乐场 运行 立即。