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

时间:2016-08-22 09:09:08

标签: 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. Property cannot be an @objc override because its type cannot be represented in Objective-C
  2. '@objc' getter for non-'@objc' property
  3. 有什么明显的东西我不见了吗?

1 个答案:

答案 0 :(得分:1)

只需将返回类型设为非可选即可找到快速解决方法。 我想在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