1
我試圖使用NSSortDescriptor
所以排序斯威夫特4.使用鍵路徑結構的列表但NSSortDescriptor
崩潰與EXC_BAD_INSTRUCTION
在NSSortDescriptor
斯威夫特關鍵路徑導致EXC_BAD_INSTRUCTION在NSSortDescriptor
struct Foo {
let bar : Int
let baz : String
}
let x = [Foo(bar: 1, baz: "Hello"),
Foo(bar: 2, baz: "World")]
let sortDescriptor = NSSortDescriptor(keyPath: \Foo.baz, ascending: true)
初始化相關的堆棧跟蹤如下所示。
#0 0x00000001007f97a0 in specialized _assertionFailure(_:_:file:line:flags:)()
#1 0x0000000100ec5a12 in specialized static _KVOKeyPathBridgeMachinery._bridgeKeyPath(_:)()
#2 0x0000000100e32142 in NSSortDescriptor.init<A, B>(keyPath:ascending:)()
這讓我覺得,NSSortDescriptor不與非志願對象的工作,但無論是編譯器給我一個警告,也沒有NSSortDescriptor的文件提到的關鍵路徑需要一個對象,它是暴露於Objective-C運行時。
感謝您的回答!那麼NSSortDescriptor需要Objective-C運行時?我有點期待,但仍然是一個無賴。我真的很想將它用於結構。 –
@ThomasBartelmess:是的。你也可以只將它應用於'NSArray',所以它對本地Swift類型的使用非常有限。 –