Swift:使用plist - 错误:可选类型的值'字符串?'没有打开

时间:2015-06-04 12:30:06

标签: ios swift plist

我是Swift的初学者,我遇到了这个问题:

给定名为" CrazyInformation.plist"的资源。位于主应用程序目录中,首先检索此资源的路径,并将该字符串分配给名为plistPath的常量。 获得plistPath后,创建一个包含plist内容的NSDictionary实例。

我正在尝试这个:

import Foundation

// Add your code below
var plistPath = NSBundle.mainBundle().pathForResource("CrazyInformation ",ofType: "plist") 
var information = NSArray(contentsOfFile: plistPath)

但是,我收到了这个错误:

  

swift_lint.swift:7:43:错误:可选类型的值'字符串?'没有打开;你的意思是使用'!'或者'?'?   var information = NSArray(contentsOfFile:plistPath)

我怎么能解开这个?

3 个答案:

答案 0 :(得分:2)

pathForResource的返回类型为String?,即如果捆绑中没有此名称的文件,则可能返回零。

编写此代码的好方法是

if let plistPath = NSBundle.mainBundle().pathForResource("CrazyInformation", ofType: "plist") {
    var information = NSArray(contentsOfFile: plistPath)
}

这将确保if条件中的代码仅在pathForResource返回非零值时执行

答案 1 :(得分:1)

var plistPath = NSBundle.mainBundle().pathForResource("CrazyInformation ",ofType: "plist")!

查看更多选项here

答案 2 :(得分:0)

我认为错误是因为您使用NSArray但CrazzyInformation的类型是字典?我也是初学者,但我认为可能就是这样。尝试使用NSDictionary。