【发布时间】:2015-07-13 03:49:02
【问题描述】:
我正在尝试使用 FBSDK v4.x 从 facebook 获取相册。我在下面使用此代码,打印出来后得到 json 格式的结果,但之后会导致如下错误:'fatal error: unexpectedly found nil while unwrapping an Optional value' on code in这一行:let graphData = result.valueForKey("data") as! [FBSDKShareAPI] .so 谁能帮我解决这个错误。提前致谢。
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]);
}
}
})
}
【问题讨论】:
-
尝试使用
as?可能,看起来您正在尝试强制转换为 nil 的值 -
result 可能不是 nil,但 result.valueForKey("data") 可能是 nil,并且您通过打开它得到错误,即 as! (带感叹号)
-
这对我们有好处吗?但它会导致这一行出现一些问题:' for obj:FBSDKShareAPI in graphData{ ' 像这样:'[FBSDKShareAPI]?'没有名为“生成器”的成员。