gpt4 book ai didi

ios - 在 swift 选项中访问 NS_OPTIONS 不可用

转载 作者:行者123 更新时间:2023-11-28 10:58:32 27 4
gpt4 key购买 nike

我在 Objective-C .h 文件中定义了一个 NS_OPTIONS:

typedef NS_OPTIONS (NSInteger, Options){
OptionsOne,
OptionsTwo,
OptionsThree
};

现在从 Swift 访问时:

public func myFunc() -> Options {
return [.one, .two]
}

我收到这个错误:

'one' is unavailable: use [] to construct an empty option set.

但我没有收到 .two 或 .three 的错误。它仅出现在第一个选项中。

最佳答案

默认情况下,在 Swift 3 中,等于 0NS_OPTIONS 枚举不会按名称导入 Swift。您必须在 Swift 中使用 [] 才能获取它。

当您将枚举数的值更改为 1 时,名称被导入。

如果您考虑一下,这是非常有道理的。 NS_OPTIONS 用于位掩码。因此,如果(比方说).one0.two1,则没有任何意义到表达式 [.one, .two] 因为 .one 的存在没有添加任何信息。

另一方面,您所做的总是 NS_OPTIONS 的误用,因为它不是位掩码。你的修改把它变成了一个。 (Objective-C 不会神奇地为您生成适合位掩码的值。)

关于ios - 在 swift 选项中访问 NS_OPTIONS 不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41947851/

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