我正在尝试在Swift中为NSLineBreakMode传递多个选项。在Objective C中,这有效:
label.lineBreakMode = NSLineBreakByWordWrapping | NSLineBreakByTruncatingTail;
参考this,我尝试在这样的常量中设置选项:
var lineBreakOptions: NSLineBreakMode = [.ByWordWrapping,.ByTruncatingTail]
passageExcerpt.lineBreakMode = lineBreakOptions
但我收到的错误是:
上下文类型'NSLineBreakMode'不能与数组文字一起使用。
有没有办法为NSLineBreakMode的枚举传递多个选项?
答案 0 :(得分:2)
NSLineBreakMode
是enum
类型而不是OptionSet
类型(即使在Objective-C中)。您只能指定一个案例。
在Objective-C中表达
NSLineBreakByWordWrapping | NSLineBreakByTruncatingTail
有效,但它只通过“或”原始值0和4将模式设置为NSLineBreakByTruncatingTail
,请检查
NSLog(@"%ld", NSLineBreakByWordWrapping); // 0
NSLog(@"%ld", NSLineBreakByTruncatingTail); // 4
NSLog(@"%ld", NSLineBreakByWordWrapping | NSLineBreakByTruncatingTail); // 4
所以Swift的等价物只是
label.lineBreakMode = .ByTruncatingTail