【发布时间】:2015-07-22 06:51:51
【问题描述】:
我正在尝试使用以下 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/
【问题讨论】:
-
你不能只转换为“数组”,你必须给出数组的类型,即使它只是
[AnyObject]。在您的情况下,请尝试let graphData = result.valueForKey("data") as [FBGraphObject]。 (只是从你的代码中猜测,我不是 Facebook SDK 用户)
标签: ios facebook swift facebook-graph-api facebook-sdk-4.0