使用Swift创建Facebook Open Graph对象
我使用Facebook iOS SDK创建自定义故事,该应用程序使用Swift编写。我基于我的代码围绕他们的文档示例https://developers.facebook.com/docs/ios/open-graph#createobject。使用Swift创建Facebook Open Graph对象
一切顺利,直到我必须创建FBGraphObject
NSMutableDictionary<FBOpenGraphObject> *object = [FBGraphObject openGraphObjectForPost];
在斯威夫特我已经重写此块为:
var object = FBGraphObject.openGraphActionForPost()
// specify that this Open Graph object will be posted to Facebook
object.setObject(true, forKey: "provisionedForPost")
// for og:title
object.setObject(description["title"]!, forKey: "title")
// for og:type, this corresponds to the Namespace you've set for your app and the object type name
object.setObject("bppridereport:ride", forKey: "type")
// for og:description
object.setObject(description["description"]!, forKey: "description")
FBRequestConnection.startForPostOpenGraphObject(object, completionHandler: { (connection:FBRequestConnection!, result:AnyObject!, error:NSError!) -> Void in
if error == nil {
let objectId = result["id"]
} else {
NSLog("Error posting the Open Graph object to the Object API:", error);
}
})
这使我的错误:的NSMutableDictionary是不相同到FBOpenGraphObject,有什么有意义的,阅读文档FBOpenGraphObject只是一个打扮的NSMutableDictionary,所以我把对象作为FBOpenGraphObject来解决错误
var object = FBGraphObject.openGraphActionForPost() as FBOpenGraphObject
问题是,当我现在编译并运行应用程序时,它崩溃在这一行......我很困惑。在那里很少有涵盖Facebook SDK的Swift实现。任何想法为什么会发生这种情况?我没有使用Facebook的API
我投类型FBGraphObject调用Facebook的范围内。
我在你的例子使用不同的呼叫到一个,因为我已经建立了与元数据的html页面,但你的例子的重构将是如下:
var object = FBGraphObject.openGraphActionForPost()
// Code to create object metadata omitted //
FBRequestConnection.startForPostOpenGraphObject(object as FBGraphObject, completionHandler: {
(connection:FBRequestConnection!, result:AnyObject!, error:NSError!) in
if error == nil {
let objectId = result["id"]
} else {
NSLog("Error posting the Open Graph object to the Object API:", error)
}
})
我希望这有助于。
所以这充其量是一个受过教育的猜测:
var object = FBGraphObject.openGraphActionForPost() as NSMutableDictionary<FBOpenGraphObject>
真的很感谢@Mike的回应。我可以看到如何有意义,但是,我得到一个“无法专门化非泛型类型'NSMutable Dictionary'”错误[错误screengrab](https://dl.dropboxusercontent.com/u/2325675/*/Social_swift_generics。 png) – 2014-11-25 10:34:38
对不起,丹,这就是我猜测的结果。我今天看到了更多,但我没有看到Swift中的一种方法来完成他们希望你在ObjC中完成的任务。 – 2014-11-25 16:57:14
你不能这么做,因为在Swift中意味着完全不同的东西。在Objective C中:'NSMutableDictionary
什么是它崩溃时的错误信息? – 2014-11-22 02:13:17
@Mike的Taverne它看起来像这样 - > **线程1:信号SIGABRT **上变种对象= FBGraphObject.openGraphActionForPost()作为FBOpenGraphObject [错误screengrab](https://dl.dropboxusercontent.com/u /2325675/*/Social_swift%20error.png) ** ** swift_dynamicCastObjCProtocolUnconditional [错误screengrab](https://dl.dropboxusercontent.com/u/2325675/*/Social_swift.png) – 2014-11-22 09:25:36
任何想法@MikeTaverne ? – 2014-11-24 20:28:20