Swift中的可选类型错误:致命错误:在展开Optional值时意外发现nil

时间:2015-07-13 03:49:02

标签: ios swift

我正在尝试使用FBSDK v4.x从facebook获取相册。我在下面使用这段代码,然后在打印出来之后将结果作为json得到,但之后它会导致如下错误:'致命错误:在代码中解包可选值'时意外发现nil这一行:让graphData = result.valueForKey(“data”)为! [FBSDKShareAPI] 。所以有人可以帮我解决这个错误。提前谢谢。

func fetchAlbum(){
    print(FBSDKAccessToken.currentAccessToken())
    let graphRequest: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me?fields=albums", parameters: nil);
    graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
        if let gotError = error{
            print(gotError.description);
        }
        else{
            print("fetched data: \(result)")
            if result != nil{ 
            let graphData = result.valueForKey("data") as! [FBSDKShareAPI]  
            var albums:[AlbumModel] =  [AlbumModel]();
            for obj:FBSDKShareAPI in graphData{
                let desc = obj.description;
                println(desc);
                let name = obj.valueForKey("name") as! String;
                println(name);
                if(name == "ETC"){
                    let test="";
                }
                let id = obj.valueForKey("id") as! String;
                var cover = "";
                if let existsCoverPhoto : AnyObject = obj.valueForKey("cover_photo"){
                    let coverLink = existsCoverPhoto as! String;
                    cover = "/\(coverLink)/photos";
                }
                //println(coverLink);
                let link = "/\(id)/photos";
                let model = AlbumModel(name: name, link: link, cover:cover);
                albums.append(model);
                }
            NSNotificationCenter.defaultCenter().postNotificationName("albumNotification", object: nil, userInfo: ["data":albums]);

            }
        }

    })
}

2 个答案:

答案 0 :(得分:0)

更好的是,你可以去

if let graphData = result?.valueForKey("data") as? [FBSDKShareAPI] {
    //bla
}

它应该为你做所有的零检查

答案 1 :(得分:0)

像这样工作正常:

sys.stdin