Xcode 9 BetaでSwift 4を試してみました。NSObjectの値(forKey :)がSwift 4で動作していない
NSObjectでキー値アクセサを使用するとクラッシュすることがあります。
アイデア?
import Cocoa
class Person: NSObject {
var name = ""
var age = 0
}
let alpha = Person()
alpha.name = "Robert"
alpha.age = 53
alpha.value(forKey: "name")
// error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).
関連:[私はスウィフト4で#selector()と@objc推論廃止に対処するにはどうすればよいです?](https://stackoverflow.com/q/44390378/2976878) – Hamish
文字列の代わりに '#keyPath(Person.name)'を使用して 'value(forKey:)'を呼び出すと、コンパイラは適切なエラーを表示しますメッセージとFix-it! –
また、Swift 4に入っていても、Swiftのキー値コーディングメカニズム 'print(alpha [keyPath:\ Person.name])' :)を使用しています。そして、 'NSObject'から継承する必要はありません。 'Person'を' struct'にすることさえできます。 – Hamish