2017-07-19 72 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下工作正常。看起来像修复。