现在是承认失败的时候了......
在Objective-C中,我可以使用类似的东西:
NSString* str = @"abcdefghi";
[str rangeOfString:@"c"].location; // 2
Run Code Online (Sandbox Code Playgroud)
在Swift中,我看到类似的东西:
var str = "abcdefghi"
str.rangeOfString("c").startIndex
Run Code Online (Sandbox Code Playgroud)
...但是这只是给了我一个String.Index,我可以使用它来下标回原始字符串,但不从中提取位置.
FWIW,String.Index有一个私人ivar _position,它具有正确的价值.我只是看不出它是如何曝光的.
我知道我可以轻松地将它添加到String中.我对这个新API中缺少的东西更感兴趣.
在Apple关于与C API交互的文档中,他们描述了NS_ENUM以Swift枚举方式导入标记的C风格枚举的方式.这是有道理的,因为Swift中的枚举很容易作为enum值类型提供,所以很容易看到如何创建自己的.
更进一步,它说这是关于NS_OPTIONS标记的C风格选项:
Swift还导入标有
NS_OPTIONS宏的选项.而选项的行为类似于进口枚举,选项还可以支持一些位操作,如&,|和~.在Objective-C中,表示使用常量零(0)设置的空选项.在Swift中,用于nil表示没有任何选项.
鉴于optionsSwift中没有值类型,我们如何创建一个C-Style选项变量来使用?