![](/img/trans.png)
[英]Swift : fatal error: unexpectedly found nil while unwrapping an Optional value
[英]Optional type error in Swift: fatal error: unexpectedly found nil while unwrapping an Optional value
我正在嘗試使用FBSDK v4.x從Facebook獲得相冊。 我在下面使用此代碼,並在打印出結果后將結果作為json接收,但隨后會導致如下錯誤:' 致命錯誤:在此行代碼中意外發現nil,同時展開了可選值 ': let graphData = result .valueForKey(“ data”)一樣! [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]);
}
}
})
}
更好的是,你可以去
if let graphData = result?.valueForKey("data") as? [FBSDKShareAPI] {
//bla
}
它應該為您做所有的零檢查
像這樣工作正常:
func fetchAlbum(){
print(FBSDKAccessToken.currentAccessToken())
let graphRequest: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me/albums", parameters: nil);
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if let gotError = error{
print(gotError.description);
}
else{
let graphData: NSArray! = (result?["data"])! as? NSArray
if (graphData != nil){
var albums:[AlbumModel] = [AlbumModel]();
var obj: NSArray?
for obj in graphData{
let desc = obj.description;
let name = obj.valueForKey("name") as! String;
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";
}
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]);
}else{
print("--------------------------")
}
}
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.