2017-07-19 70 views
1

我想了解Swift 4的最新版本 - better KVC。有在操場上打印這個簡單的東西了什麼Swift 4新KVC

class Foo { 
    var name: String 
    init(name: String) { 
     self.name = name 
    } 
} 

class Bar { 

    var fooObject: Foo = Foo(name: "FooName") 
    var keyPath = \Foo.name 

    func output() { 
     print(fooObject[keyPath: keyPath]) 
    } 
} 

let bar = Bar() 
bar.output() 

儘管如此,如果你做一個小的變化,並試圖輸出這個它的工作原理:

print(fooObject[keyPath: \Foo.name]) 

有人能解釋一下嗎?它仍然是越野車,或者我只是在這裏做一些愚蠢的事情?謝謝。

+0

將「var keyPath = \ Foo.name」更改爲「let keyPath = \ Foo.name」時有時會起作用。無論如何,似乎並不像預期的行爲。 – Lausbert

+1

用你的代碼創建一個命令行工具項目,Swift編譯器以**命令因信號失敗而停止:Segmentation fault:11' **。更好地發送bug報告到bugs.swift.org。 – OOPer

+0

是的,當試圖在實際項目中使用新的KVC時,我遇到了很多'分段錯誤:11'。一般來說,這個功能似乎已經完成了50%。 –

回答

0

在Xcode 9 beta 4下工作正常。看起來像修復。