Swift中的条件绑定错误

时间:2016-02-12 23:06:44

标签: ios swift2

我在学习Swift 2的过程中正在研究一个示例项目(用早期版本的Swift编写),并遇到了问题

我收到编译错误 -

class func loadMembersFromFile(path:String) -> [Member]
{
var members:[Member] = []

var error:NSError? = nil
if let data = NSData(contentsOfFile: path, options:[]),
json = NSJSONSerialization.JSONObjectWithData(data, options: []) as? NSDictionary,
team = json["team"] as? [NSDictionary] {
for memberDictionary in team {
let member = Member(dictionary: memberDictionary)
members.append(member)
}
}
return members
}

错误是: 条件绑定的初始化程序必须具有可选类型,而不是'NSData'

调用可以抛出,但没有标记为'try'并且未处理错误

我的Swift编程经验非常有限,所以我无法找到纠正这些错误的方法。任何建议,将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

  

条件绑定的初始化程序必须具有Optional类型,而不是   '的NSData'

表示当结果不是可选的时,您不需要条件绑定。但这不是真正的问题。因为NSData初始化程序可以抛出错误(在第二个错误中说明),您可以将其转换为可选。以下是您的代码的外观:

class func loadMembersFromFile(path:String) -> [Member]
{
    var members:[Member] = []

    var error:NSError? = nil
    if let data = try? NSData(contentsOfFile: path, options:[]),
        json = (try? NSJSONSerialization.JSONObjectWithData(data, options: [])) as? NSDictionary,
        team = json["team"] as? [NSDictionary] {
            for memberDictionary in team {
                let member = Member(dictionary: memberDictionary)
                members.append(member)
            }
    }
    return members
}
相关问题