关于IndexSet
的{{3}}说:
有效整数值的范围是
0..<INT_MAX-1
。任何超出此范围的都属于错误。
但是此代码可以正常工作:
let indexSet = IndexSet(integer: -1)
如果我们尝试使用-2
,它将导致崩溃。
为什么会这样?是错误还是我错过了什么?
在Xcode 9.4.1和Swift 4.1上进行了测试。
答案 0 :(得分:1)
这是一个错误。其原因是@ManyToMany(mappedBy = "drawings", cascade = CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
private List<Bookmark> bookmarks;
的初始化程序是不可行的。 Here是标准库中定义的初始化程序:
IndexSet
使用无符号整数应该是与定义一致的方法:
有效整数值的范围是
/// Initialize an `IndexSet` with a single integer. public init(integer: Element) { _handle = _MutablePairHandle(NSIndexSet(index: integer), copying: false) }
。外面的东西 这个范围是错误的。
为了安全起见,您可以使用此扩展名
0..<INT_MAX-1
因此,当您尝试使用负整数初始化IndexSet时,它将给您正确的错误消息:
extension IndexSet {
public init(unsignedInt: UInt) {
self = IndexSet(integer: Int(unsignedInt))
}
}