`NSBundle.mainBundle()。URLForResource`总是返回`nil`

时间:2014-07-24 15:28:35

标签: ios swift plist null nsbundle

我是Swift的新手,正在使用Xcode 6。

我正在尝试从应用的plist文件中读取数据,但它无效。

data.plist文件包含在Xcode的Supporting Files组中。

我正在使用以下代码:

var dataList = NSDictionary(contentsOfURL:NSBundle.mainBundle().URLForResource("data", withExtension:"plist"))

然而NSURL:

NSBundle.mainBundle().URLForResource("data", withExtension:"plist")

始终返回nil

我不知道出了什么问题。

1 个答案:

答案 0 :(得分:1)

通常,您会希望使用此代码来创建plist。这将找到plist的路径,然后将其移动到文档目录中(如果尚未存在)。如果你不移动它,就不允许你写它,因此这段代码是至关重要的。要从plist中获取信息,请使用第二位代码。显然,如果你有一个数组而不是一个字典,你就必须改变它来处理它。

var path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
    path = path.stringByAppendingPathComponent("data.plist")
    let fileManager = NSFileManager.defaultManager()
    if !fileManager.fileExistsAtPath(path) {
        let sourcePath = NSBundle.mainBundle().pathForResource("data", ofType: "plist")
        fileManager.copyItemAtPath(sourcePath, toPath: path, error: nil)
}

let dict = NSMutableDictionary(contentsOfFile: path) as NSMutableDictionary