【问题标题】:iOS, objc, swift, fail to create an extension on objc fileiOS,objc,swift,无法在 objc 文件上创建扩展名
【发布时间】:2021-12-23 01:39:09
【问题描述】:

我正在尝试扩展我的 objc 类:

#import "Name-Swift-Import.h"

@interface RequestDateOptionViewCell () <DatePickerViewDelegate>

然后我在 Swift 中扩展类:

import Foundation
import UIKit

@available(iOS 14.0, *)
@objc extension RequestDateOptionViewCell: AXCustomContentProvider {
    public var accessibilityCustomContent: [AXCustomContent]! {
        get {
            [
                
            ]
        }
        set(accessibilityCustomContent) {
            //
        }
    }
}

然后我编译看看结果。 问题出现在自动生成的文件中:

@class AXCustomContent;

SWIFT_AVAILABILITY(ios,introduced=14.0)
@interface RequestDateOptionViewCell (SWIFT_EXTENSION(NAME)) <AXCustomContentProvider>
@property (nonatomic, copy) NSArray<AXCustomContent *> * _Null_unspecified accessibilityCustomContent;
@end

错误信息:

找不到“RequestDateOptionViewCell”的接口声明

有什么建议吗?谢谢!

【问题讨论】:

  • 似乎你的 objc->swift 的桥接头不起作用或 RequestDateOptionViewCell 接口没有暴露在其中,所以 swift 看不到它,因此必须抱怨它找不到扩展它的接口。在这种情况下,在 objc 中扩展它会容易得多。
  • 另外,如果#import "Name-Swift-Import.h" 是您快速暴露的东西桥接回objc,它应该在实现文件中声明,尽管它要求一个头文件。

标签: ios swift objective-c


【解决方案1】:

如果您想仔细检查差异,请编译以下内容(将 &lt;your_module&gt; 替换为您应用模块的名称)

&lt;your_module&gt;-Bridging-Header.h

#import "RequestDateOptionViewCell.h"

DatePickerViewDelegate.swift

@objc
protocol DatePickerViewDelegate {
}

RequestDateOptionViewCell.h

#import <UIKit/UIKit.h>

@interface RequestDateOptionViewCell : UITableViewCell

@end

RequestDateOptionViewCell.m

#import "RequestDateOptionViewCell.h"
#import "<your_module>-Swift.h"

@interface RequestDateOptionViewCell () <DatePickerViewDelegate>

@end

@implementation RequestDateOptionViewCell

@end

RequestDateOptionViewCell+Accessibility.swift

import Accessibility

@available(iOS 14.0, *)
@objc
extension RequestDateOptionViewCell: AXCustomContentProvider {
    public var accessibilityCustomContent: [AXCustomContent]! {
        get { [] }
        set(accessibilityCustomContent) { print("setting accessibility content") }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 2016-12-31
    相关资源
    最近更新 更多