【问题标题】:Objective-C class property type not exposed to SwiftObjective-C 类属性类型未暴露给 Swift
【发布时间】:2020-07-10 09:43:48
【问题描述】:

我有一个 Swift 项目,其中包含一个通过 CocoaPods 链接的 Objective-C 库。它工作正常,我可以调用所有方法等。我的 Bridging-Header 也存在并且正在工作。

但我的 Objective-C 类的某些属性有问题。

这是我的课:

#import <Foundation/Foundation.h>
#import "OAIObject.h"

#import "OAILayerTreeGroupAllOf.h"
#import "OAILayerTreeItem.h"
@protocol OAILayerTreeGroupAllOf;
@class OAILayerTreeGroupAllOf;
@protocol OAILayerTreeItem;
@class OAILayerTreeItem;



@protocol OAILayerTreeGroup
@end

@interface OAILayerTreeGroup : OAILayerTreeItem


@property(nonatomic) NSArray<OAILayerTreeItem>* children;

@end

我可以从 Swift 代码创建这个对象。 但是,如果我尝试访问子项,我会得到类型“Any”,所以我无法访问子项属性。

有没有办法访问我的 Objective-C 类的属性类型?

【问题讨论】:

    标签: objective-c swift


    【解决方案1】:

    我怀疑问题在于您的 Objective-C 泛型声明不包含 *

    您可以尝试将您的属性声明更改为

    @property(nonatomic) NSArray<OAILayerTreeItem *> *children;
    

    您的NSArray 实例包含OAILayerTreeItem 类型的对象,这就是您需要* 的原因。

    请注意,我无法尝试此操作。

    【讨论】:

    • 它有效,我可以看到我的属性。但是,如果我尝试在 Swift 中对这个数组使用 forEach 进行迭代,我会收到错误“前提条件失败:NSArray 元素无法匹配 Swift 数组元素类型”。如果我按照自己的方式进行操作,我可以在数组上使用 forEach 进行迭代,但没有类型。
    猜你喜欢
    • 1970-01-01
    • 2015-08-08
    • 2020-11-19
    • 2016-08-26
    • 2012-03-14
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多