2

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")
        }
    }
}

はSwift でのみ定義されているretrieveActivityType()ため、Objective-C に相当します。UIActivityTypeしかし、これまでのところ運が悪く、まだ 2 つのエラーがあります。

  1. Property cannot be an @objc override because its type cannot be represented in Objective-C
  2. '@objc' getter for non-'@objc' property

私が行方不明であることは明らかですか?

4

1 に答える 1

1

戻り値の型をnon-optionalにするだけで、簡単な修正が見つかりました。ベータ 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

于 2016-08-23T02:06:30.990 に答える