在Swift 2.1中将多个选项传递给NSLineBreakMode
我正在尝试在Swift中传递NSLineBreakMode的多个选项。在目标C中,这起作用:在Swift 2.1中将多个选项传递给NSLineBreakMode,swift,cocoa,enums,Swift,Cocoa,Enums,我正在尝试在Swift中传递NSLineBreakMode的多个选项。在目标C中,这起作用: label.lineBreakMode = NSLineBreakByWordWrapping | NSLineBreakByTruncatingTail; 关于,我尝试过在常量中设置选项,如下所示: var lineBreakOptions: NSLineBreakMode = [.ByWordWrapping,.ByTruncatingTail] passageExcerpt.lineBreakM
label.lineBreakMode = NSLineBreakByWordWrapping | NSLineBreakByTruncatingTail;
关于,我尝试过在常量中设置选项,如下所示:
var lineBreakOptions: NSLineBreakMode = [.ByWordWrapping,.ByTruncatingTail]
passageExcerpt.lineBreakMode = lineBreakOptions
但我得到的一个错误是:
上下文类型“NSLineBreakMode”不能与数组文字一起使用
是否有方法为NSLineBreakMode的枚举传递多个选项?
NSLineBreakMode
是enum
类型,而不是OptionSet
类型(即使在Objective-C中)。您只能指定一个案例
在Objective-C中,表达式
NSLineBreakByWordWrapping | NSLineBreakByTruncatingTail
工作正常,但它仅通过“或”取消原始值0和4将模式设置为nslinebreakbytruncingtail
,请检查此项
NSLog(@"%ld", NSLineBreakByWordWrapping); // 0
NSLog(@"%ld", NSLineBreakByTruncatingTail); // 4
NSLog(@"%ld", NSLineBreakByWordWrapping | NSLineBreakByTruncatingTail); // 4
所以Swift等价物只是
label.lineBreakMode = .ByTruncatingTail