我想读取一个 NSArray 表单 plist 和代码:
func loadPlistArray() -> [Any] {
var path: String? = Bundle.main.path(forResource:"MyCenter", ofType: "plist")
if let arry = NSArray(contentsOfFile: path!) {
return arry as! NSArray
}else{
return nil;
}
}
但总是出现以下错误:
在我从 plist 中获取数据后,我发现我看不到 Dictionary 的详细信息:
我应该通过 var plistArray : [[String:Any]] 在数组中添加一个泛型吗?
最佳答案
您收到的错误消息告诉您您的方法有什么问题,这就是我编写函数的方式:
func loadPlistArray() -> [Any] { // 1
guard
let url = Bundle.main.url(forResource: "MyCenter", withExtension: "plist"), // 2
let list = NSArray(contentsOf: url) as? [Any] // 3
else { return [] } // 4
return list
}
还有一些评论:
- 您正在声明方法以返回
Any
项的Array
,但您的方法试图返回NSArray
。 - 建议使用基于 URL 的方法访问文件,而不是基于字符串的路径。
- 您必须使用 Array 方法来读取 plist,但您可以将其转换为
[Any]
。但是,如果您知道 plist 中的项目类型,我建议您从此方法返回一个正确类型的数组,例如[String]
,[Int]
等 - 如果无法读取文件,则无需返回可选值。根据您要如何处理错误,您可以返回一个空数组(如我在此处所示)或将您的函数转换为抛出函数,这样如果您无法读取文件,则会抛出错误并可以处理通过调用代码。
关于ios - 如何在 Swift 中读取 Plist?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45877406/