在快速3游乐场阅读plist

时间:2016-12-10 09:43:55

标签: ios swift swift3 swift-playground

我已经在这里跟踪了很多问题,但似乎没有任何问题。

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

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)。一段时间后执行停止,错误"错误:执行被中断原因exc_bad_access(代码= 1地址= 0x0)" 在另一次重启后代码工作。从操场上显示的那一刻起,我如何将数据提取到swift中 [" 2级":[" Col":< _NS_array0 0x7fc620d091a0>(

2 个答案:

答案 0 :(得分: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]
}

答案 1 :(得分:0)

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

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

操场连续运行的问题通过转到活动监视器并强制退出名为com.apple.coresimulator的进程来解决,该进程被识别为无响应。在这样做后,游乐场立即运行。