【问题标题】:Object conform to protocol Swift对象符合 Swift 协议
【发布时间】:2015-04-02 05:55:33
【问题描述】:

任何人都可以帮助找到如何在Swift中写这个

NSMutableDictionary<FBOpenGraphObject> *object = [FBGraphObject openGraphObjectForPost];

上面的ObjectiveC代码说object类型NSMutableDictionary符合协议FBOpenGraphObject。我试图像

一样快速地表示这一点
var object:FBOpenGraphObject, Dictionary = FBGraphObject.openGraphActionForPost()

// specify that this Open Graph object will be posted to Facebook
object.provisionedForPost = true   //This will not work

但这不合适,我无法为对象分配任何值。帮我弄清楚如何在swift中表示一个符合协议的对象

【问题讨论】:

    标签: ios objective-c swift


    【解决方案1】:

    也许你可以这样做:

    var obj = FBGraphObject.openGraphActionForPost()
    if let fbObj = obj as? FBOpenGraphObject {
        // specify that this Open Graph object will be posted to Facebook
        fbObj.provisionedForPost = true // use fbObj for FBOpenGraphObject-specific members
        obj["title"] = "Test hot spot" // use obj for Dictionary-specific members
        // Both obj and fbObj vars point to the same object
    }
    

    【讨论】:

    • 这行不通,如果我尝试执行“fbObj["title"] = "Test hot spot"" 给出错误FBOpenGraphObject 没有名为 subscript 的成员
    • 这是“预期的”,因为这里没有提示编译器 FBOpenGraphObject 协议应用于 Dictionary 类型。当你想访问FBOpenGraph-specific 成员时,使用fbObj 变量,当你想访问Dictionary-specific 成员时,使用obj 一个。不过,我承认可能有更好的方法,但我还不知道。
    • 另请参阅与您的问题类似的另一个 SO 线程,并且具有相似的答案,两个不同的变量指向同一个对象但解释不同:stackoverflow.com/questions/26401778/…
    • 感谢您的信息。我会检查
    猜你喜欢
    • 2016-09-28
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多