Swift 3 UIActivity Subclass覆盖问题

时间:2016-08-25 22:04:07

标签: swift xcode override uiactivity

我刚刚从swift 2升级到swift 3,我遇到了覆盖属性的一些问题。

在swift 2中,您可以像这样设置活动类型

display:inline-block

然而在swift 3中(在Xcode 8 beta 6中)他们引入了NS_STRING_ENUM,现在我们覆盖了像这样的activityType

override func activityType() -> String? {
   return "com.a.string"
}

问题是Xcode会抱怨这个:     属性不能是@objc覆盖,因为它的类型不能在Objective-C

中表示

我找到的一个解决方案是将注释@nonobjc添加到它中:

override var activityType() -> UIActivityType? {
    return UIActivityType.customActivityType
}

虽然这有助于消除错误,但此属性永远不会被调用... 这是一个问题,因为当用户完成活动并且调用了completionWithItemsHandler()时,活动类型被认为是nil。

我找到的一项工作是使用objective-c扩展。有用;它给了我喜欢的类型“马”。

@nonobjc override var activityType() -> UIActivityType? {
    return UIActivityType.customActivityType
}

我的问题是如何以纯粹的方式做到这一点。

1 个答案:

答案 0 :(得分:8)

在纯Swift3中,我可以使用

编译它
->