objective-c - UIActivityType – 属性不能是@objc 覆盖,因为它的类型不能在 Objective-C 中表示

标签 objective-c swift swift3 xcode8-beta6

在更新到 Xcode 8 Beta 6 时,我看到引入了一个新类型:UIActivityType

所以我尝试在我的 UIActivity 自定义类中做这样的事情:

class FooActivity: UIActivity {
    func retrieveActivityType() -> String {
        return "someStringDescribingActivityType"
    }

    override open var activityType: UIActivityType? {
        @objc(retrieveActivityType)
        get {
            return UIActivityType(rawValue: "someStringDescribingActivityType")
        }
    }
}

其中 retrieveActivityType() 是 Objective-C 的等效项,因为 UIActivityType 仅在 Swift 中定义。但到目前为止运气不好,仍然有两个错误:

  1. 属性不能是 @objc 覆盖,因为它的类型不能在 Objective-C 中表示
  2. 非“@objc”属性的“@objc”getter

有什么明显我遗漏的吗?

最佳答案

通过将返回类型设置为非可选 找到了一个快速修复方法。 我想在 beta 7 发布之前没有真正的解决方法。

class FooActivity: UIActivity {
    override open var activityType: UIActivityType {
    get {
        return UIActivityType(rawValue: "someStringDescribingActivityType")
    }
}

来源:

https://bugs.swift.org/browse/SR-2344

https://github.com/apple/swift/pull/4360

关于objective-c - UIActivityType – 属性不能是@objc 覆盖,因为它的类型不能在 Objective-C 中表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39075442/

相关文章:

iphone - 从另一个应用程序(如电子邮件/网络浏览器)启动 iPad 应用程序

ios - 已查看 tableviewcell 并基于它运行函数的次数

swift - Swift 3 中的 dispatch_once 去哪儿了?

objective-c - 为什么我不应该子类化 UIButton?

objective-c - IOS5编程和Objective C中的依赖注入(inject)

swift - UIPicker 选择显示为白色

ios - 使用 UIAlertAction 关闭 View Controller

ios - 我的 UIView 没有呈现

swift - 将 Facebook 登录与 Parse Swift 3 集成

ios - 在 block 中引用 iOS 应用程序委托(delegate)是否会创建委托(delegate)对象的副本?