Swift 不拾取 NSMutableArray 键入批注从框架吗

标签: Objective-C Swift
发布时间: 2017/3/6 22:54:15
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

陈寿,我创建了一个框架,我创建了扩展为一个班的 Swift 主项目中的文件。 我已经注明 (框架) 中的类,如下所示︰

@interface GerberStepAndRepeat : GerberElement <GerberBlock>
@property (nonatomic,strong,nonnull) NSMutableArray<GerberLevel *> *levels;
@end

Swift 我访问 levels 属性,如下所示︰

extension GerberStepAndRepeat {
    func flatten() {
        for level in self.levels {
        }
    }
}

levels属性然后类型为 NSMutableArraylevel 变量的类型为 Element

它为什么不显示的类型,我已经指定在框架中?还有我需要调整,使这项工作的任何设置吗?

解决方法 1:

互动与objective-c Api (着重号是后加的)︰

objective-c 声明的 NSArrayNSSetNSDictionary 使用轻量级的泛型参数类型导入的 Swift 与保存其内容的类型有关的信息。
...
除了这些基础集合类,objective-c 轻量级泛型,将忽略 Swift .导入到任何其他类型使用轻量级泛型 Swift 好像他们是 unparameterised。

NSMutableArray在保持其轻量级的泛型参数的基础类型的列表不是 Swift

示例︰objective-c 属性

@property(strong, nonatomic, nonnull) NSArray<NSString *> *anArrayProperty;
@property(strong, nonatomic, nonnull) NSMutableArray<NSString *> *aMutableArrayProperty;

导入的 Swift (正如你可以看到使用 Xcode 菜单中的"导航-> 跳到生成的接口") 作为

public var anArrayProperty: [String]
public var aMutableArrayProperty: NSMutableArray
赞助商