NSPlaceholders 和 Swift
NSPlaceholders and Swift
我正在查看数组控制器的 .selection
,我想知道何时选择多个值或 none。在 ObjC 中,我们通过将选择作为 id
并检查它与各种占位符标记的原始相等性来做到这一点:NSMultipleValuesMarker
、NSNoSelectionMarker
和 NSNotApplicableMarker
.
但这在 Swift 中不起作用:
let currentValue = eventsArrayController.selection.valueForKey("enabled")
if let markerVal = currentValue {
if markerVal == NSMultipleValuesMarker {
// this doesn't compile, AnyObject's can't be compared with ==
}
switch markerVal {
case NSNoValueMarker:
// this doesn't compile, an AnyObject is not a valid pattern
}
}
如何测试 Swift 中占位符标记的值?
在Swift中,==
是为了检查值是否相等(也就是说,如果两个对象包含相同的数据,不管它们是否共享相同的内存位置)。使用 ===
运算符检查引用相等性(测试两个对象是否共享相同的内存位置)。
我正在查看数组控制器的 .selection
,我想知道何时选择多个值或 none。在 ObjC 中,我们通过将选择作为 id
并检查它与各种占位符标记的原始相等性来做到这一点:NSMultipleValuesMarker
、NSNoSelectionMarker
和 NSNotApplicableMarker
.
但这在 Swift 中不起作用:
let currentValue = eventsArrayController.selection.valueForKey("enabled")
if let markerVal = currentValue {
if markerVal == NSMultipleValuesMarker {
// this doesn't compile, AnyObject's can't be compared with ==
}
switch markerVal {
case NSNoValueMarker:
// this doesn't compile, an AnyObject is not a valid pattern
}
}
如何测试 Swift 中占位符标记的值?
在Swift中,==
是为了检查值是否相等(也就是说,如果两个对象包含相同的数据,不管它们是否共享相同的内存位置)。使用 ===
运算符检查引用相等性(测试两个对象是否共享相同的内存位置)。