gpt4 book ai didi

Swift 3 UIActivity 子类覆盖问题

转载 作者:搜寻专家 更新时间:2023-10-31 08:17:59 27 4
gpt4 key购买 nike

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

在 swift 2 中你可以像这样设置事件类型

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

但是在 swift 3 中(在 Xcode 8 beta 6 中)他们引入了 NS_STRING_ENUM 并且现在我们像这样覆盖 activityType

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

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

我找到的一个解决方案是像这样向它添加注释@nonobjc:

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

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

我发现的一种解决方法是使用 objective-c 扩展。有用;它给了我想要的类型“马”。

@interface Custom_UIActivity (custom)
- (UIActivityType)activityType;
@end

@implementation Custom_UIActivity (custom)
- (UIActivityType)activityType {
return @"horses";
}

我的问题是如何在纯粹的 swift 中做到这一点。

最佳答案

在纯 Swift3 中,我可以使用

编译它
override var activityType: UIActivityType {
return UIActivityType(rawValue: self.customActivityType.rawValue)
}

关于Swift 3 UIActivity 子类覆盖问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39155435/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com