我正在尝试使用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]);
}
}
})
}
答案 0 :(得分:0)
更好的是,你可以去
if let graphData = result?.valueForKey("data") as? [FBSDKShareAPI] {
//bla
}
它应该为你做所有的零检查
答案 1 :(得分:0)
像这样工作正常:
sys.stdin