Swift 4 新的 KVC

Posted

技术标签:

【中文标题】Swift 4 新的 KVC【英文标题】:Swift 4 new KVC 【发布时间】:2017-07-19 12:29:12 【问题描述】:

我正在尝试了解 Swift 4 的最新添加 - better 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])

谁能解释一下?它仍然是越野车还是我只是在这里做一些愚蠢的事情?谢谢。

【问题讨论】:

当将“var keyPath = \Foo.name”更改为“let keyPath = \Foo.name”时,它有时会起作用。无论如何,这似乎不是预期的行为。 使用您的代码创建一个命令行工具项目,Swift 编译器会以 Command failed due to signal: Segmentation fault: 11 停止。最好向 bugs.swift.org 发送错误报告。 是的,当我尝试在实际项目中使用新的 KVC 时,我遇到了很多“分段错误:11”。通常,此功能似乎已完成 50%。 这是一个编译器错误:SR-5384 【参考方案1】:

您需要更新到已修复的 Xcode 9 beta 4。

【讨论】:

以上是关于Swift 4 新的 KVC的主要内容,如果未能解决你的问题,请参考以下文章

Vapor 3 Swift 4 如何制作计时器

使用Swift 4.1向Heroku部署Vapor 3 beta应用程序的问题

swift 4继承了啥

谷歌登录后使用 Swift 4 推送视图控制器

Xcode 9.3(Swift 4.1)中的 Codable '没有初始化器'

使用 Swift 4 和 Xcode 9 获取 JSON 数据