gpt4 book ai didi

ios - Swift 中的数组扩展,使用 NSPropertyListReadOptions 从 plist 读取数组

转载 作者:行者123 更新时间:2023-11-28 08:34:47 25 4
gpt4 key购买 nike

我正在尝试在 Swift 中实现数组的扩展以便能够从 plist 文件初始化,我正在尝试使用 NSPropertyListReadOptions

extension Array {
static func arrayFromPlistWithName (filename: String) -> [[String:AnyObject]]? {

let path = NSBundle.mainBundle().pathForResource(filename, ofType: "plist")!
let url = NSURL(fileURLWithPath: path)
let data = NSData(contentsOfURL: url)

let opts = NSPropertyListReadOptions(rawValue: NSPropertyListMutabilityOptions.MutableContainersAndLeaves.rawValue)
let plist = try! NSPropertyListSerialization.propertyListWithData(data!, options: opts, format: nil)

return plist as? [[String:AnyObject]]
}
}

下面是我的使用方法:

    let a:[[String:AnyObject]]? = Array.arrayFromPlistWithName("countries")

但我可以报错:

Cannot convert value of type '[[String : AnyObject]]?' to specified type '[[String : AnyObject]]?'

我的问题是如何让它工作以及如何处理所有错误,因为我使用了很多力解包,这可能是导致崩溃的原因

最佳答案

尝试这样的事情:

enum ArrayFromPlistError: ErrorType {
case InvalidPlist
}

extension Array {

static func readArray(FromPlistNamed name: String) throws -> [AnyObject] {
let path = NSBundle.mainBundle().pathForResource(name, ofType: "plist")!

if let array = NSArray(contentsOfFile:path) {
return array as AnyObject as! [AnyObject]
}
else {
throw ArrayFromPlistError.InvalidPlist
}
}
}

关于ios - Swift 中的数组扩展,使用 NSPropertyListReadOptions 从 plist 读取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38107143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com