加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift 3 UIActivity Subclass覆盖问题

发布时间:2020-12-14 18:04:35 所属栏目:百科 来源:网络整理
导读:我刚刚从 swift 2升级到 swift 3,我遇到了覆盖属性的一些问题. 在swift 2中,您可以像这样设置活动类型 override func activityType() - String? { return "com.a.string"} 但是在swift 3中(在Xcode 8 beta 6中),他们引入了NS_STRING_ENUM,现在我们覆盖了这样
我刚刚从 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";
}

我的问题是如何以纯粹的速度做到这一点.

解决方法

在纯Swift3中,我可以使用它编译它

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读