我尝试使用以下 Swift 代码通过新的 Facebook SDK 4.1 获取用户 Facebook 相册数组:
func getAlbumList()
{
var FBAlbums = [String]()
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me?fields=albums", parameters: nil)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil)
{
// Process error
println("Error: \(error)")
}
else
{
println("fetched data: \(result)")
let graphData = result.valueForKey("data") as Array;
for obj:FBGraphObject in graphData{
let desc = obj.description;
println(desc);
let name = obj.valueForKey("name") as String;
println(name);
}
}
})
}
FB SDK 查询工作正常,因为结果值包含来自 facebook 的所有数据(打印正常),但是任何实际将其转换为数组的尝试都会失败。
使用 XCode 6.3 会出现以下错误:
let graphData = result.valueForKey("data") as Array;
='AnyObject?' is not convertible to 'Array<T>'
for obj:FBGraphObject in graphData{
=Use of undeclared type 'FBGraphObject'
我似乎找不到任何有关 FBGraphObject 被替换的信息,或者为什么我无法将结果转换为数组的信息。
用作背景的文章(但似乎已经过时):
Creating an Array of objects from the Facebook SDK in Swift
http://selise.ch/build-a-facebook-album-browser-using-swift/
最佳答案
只需更改这行代码:
let graphData = result.valueForKey("data") as Array;
致:
self.dict = result["data"] as! NSArray
这适用于我从 Facebook 检索用户照片:
FBSDKGraphRequest(graphPath: "me/photos", parameters: ["fields": "id, name, source"]).startWithCompletionHandler({ (connection, result, error) -> Void in
if (error == nil){
self.dict = result["data"] as! NSArray
for item in self.dict { // loop through data items
if let urlString = item["source"]! {
let url = NSURL(string: urlString as! String)
let imageData = NSData(contentsOfURL: url!)
let image = UIImage(data: imageData!)
self.socialPhotoCollection.append(image!)
}
}
}
})
关于ios - 使用 Facebook SDK 4.1 快速获取 Facebook 相册数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30173236/