Swift 変数の実際の名前を文字列として取得する 質問する

Swift 変数の実際の名前を文字列として取得する 質問する

そこで、Swift で実際の変数名を文字列として取得しようとしていますが、その方法が見つかりません... あるいは、この問題と解決策を間違った角度から見ているのかもしれません。

つまり、基本的に私がやりたいことは次のようになります:

var appId: String? = nil

//This is true, since appId is actually the name of the var appId
if( appId.getVarName = "appId"){
    appId = "CommandoFurball"
}

残念ながら、Apple のドキュメントでこれに近いものを見つけることができませんでしたが、次のものがありました。

varobj.self or reflect(var).summary 

ただし、これにより、変数自体の内容や変数の型 (この場合は文字列) に関する情報が提供され、必要なのは変数の実際の名前です。

ベストアンサー1

これは公式にサポートされていますスイフト3使用して#keyPath()

https://github.com/apple/swift-evolution/blob/master/proposals/0062-objc-keypaths.md

使用例は次のようになります。

NSPredicate(format: "%K == %@", #keyPath(Person.firstName), "Wendy")

スイフト4さらに良いものがあります:\KeyPath表記法

https://github.com/apple/swift-evolution/blob/master/proposals/0161-key-paths.md

NSPredicate(format: "%K == %@", \Person.mother.firstName, "Wendy")

// or

let keyPath = \Person.mother.firstName
NSPredicate(format: "%K == %@", keyPath, "Andrew")

ショートカットは歓迎すべき追加機能であり、変数からキーパスを参照できることは非常に強力です。

おすすめ記事