Ios 为什么UIButton.layer.maskedCorners接受分配显式数组而不是数组变量?

Ios 为什么UIButton.layer.maskedCorners接受分配显式数组而不是数组变量?,ios,swift,Ios,Swift,在Swift中,为什么这样做有效 let button = UIButton() button.layer.maskedCorners = [.layerMinXMaxYCorner, .layerMinXMinYCorner] 这不是吗 let corners : [CACornerMask] = [.layerMinXMaxYCorner, .layerMinXMinYCorner] let button = UIButton() button.layer.maskedCorners =

在Swift中,为什么这样做有效

let button = UIButton()
button.layer.maskedCorners = [.layerMinXMaxYCorner, .layerMinXMinYCorner]
这不是吗

let corners : [CACornerMask] = [.layerMinXMaxYCorner, .layerMinXMinYCorner]
let button = UIButton()
button.layer.maskedCorners = corners
也就是说,将数组显式分配给
maskedCorners
可以,但分配数组变量则不行

错误是:

无法将类型“[cacornermak]”的值分配给类型“cacornermak” button.layer.maskedCorners=角点


您的
corners
常量类型错误
[cacornermak]
使其成为
cacornermak
的数组。您希望它的类型为
cacornermak
。它被声明为NS_OPTIONS类型,映射到Swift选项集

代码
[.layerMinXMaxYCorner,.layerMinXMinYCorner]
看起来像数组语法,但不是。语义糖允许您在C标志变量中指定不同的位掩码(Swift选项集映射到该变量)

引用苹果的文档:“Swift还将使用NS_OPTIONS宏标记的C枚举作为Swift选项集导入”


摘自:Apple Inc.“将Swift与可可粉和Objective-C(Swift 4 beta)结合使用”,iBooks

您的
角点
常量的类型错误
[cacornermak]
使其成为
cacornermak
的数组。您希望它的类型为
cacornermak
。它被声明为NS_OPTIONS类型,映射到Swift选项集

代码
[.layerMinXMaxYCorner,.layerMinXMinYCorner]
看起来像数组语法,但不是。语义糖允许您在C标志变量中指定不同的位掩码(Swift选项集映射到该变量)

引用苹果的文档:“Swift还将使用NS_OPTIONS宏标记的C枚举作为Swift选项集导入”

摘自:Apple Inc.“将Swift与可可粉和Objective-C(Swift 4 beta)结合使用”,iBooks

你应该试试看

let corners : CACornerMask = [.layerMinXMaxYCorner, .layerMinXMinYCorner]
let button = UIButton()
button.layer.maskedCorners = corners
您将错误的类型分配给所需的类型

您应该尝试

let corners : CACornerMask = [.layerMinXMaxYCorner, .layerMinXMinYCorner]
let button = UIButton()
button.layer.maskedCorners = corners

您将错误的类型分配给所需的类型

Nice!明白了,但另一个问题是,这个
[.layerMinXMaxYCorner,.layerMinXMinYCorner]
不是
cacornermak
的数组,应该这样声明吗?我这样问是因为如果我这样做
让a:String=[“a”,“b”]
代码无法编译。看到你的编辑,这真的让我感到困惑,正如我在上一篇评论中提到的
String
数组大小写一样。请阅读Apple iBook中关于选项集的部分“使用Swift with Cocoa和Objective-C”它比我能解释的好得多。在swiftdoc.org.Nice上还有一个很长的(链接)部分!明白了,但另一个问题是,这个
[.layerMinXMaxYCorner,.layerMinXMinYCorner]
不是
cacornermak
的数组,应该这样声明吗?我这样问是因为如果我这样做
让a:String=[“a”,“b”]
代码无法编译。看到你的编辑,这真的让我感到困惑,正如我在上一篇评论中提到的
String
数组大小写一样。请阅读Apple iBook中关于选项集的部分“使用Swift with Cocoa和Objective-C”它比我能解释的好得多。在swiftdoc.org上还有一个很长的链接部分。