将多个选项传递给Swift 2.1中的NSLineBreakMode

时间:2015-12-11 16:49:49

标签: swift cocoa enums

我正在尝试在Swift中为NSLineBreakMode传递多个选项。在Objective C中,这有效:

label.lineBreakMode = NSLineBreakByWordWrapping | NSLineBreakByTruncatingTail;

参考this,我尝试在这样的常量中设置选项:

var lineBreakOptions: NSLineBreakMode = [.ByWordWrapping,.ByTruncatingTail]
passageExcerpt.lineBreakMode = lineBreakOptions

但我收到的错误是:

  

上下文类型'NSLineBreakMode'不能与数组文字一起使用。

有没有办法为NSLineBreakMode的枚举传递多个选项?

1 个答案:

答案 0 :(得分:2)

NSLineBreakModeenum类型而不是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