gpt4 book ai didi

swift - 需要从 Swift 中的 var 获取 instanceName 作为字符串

转载 作者:可可西里 更新时间:2023-11-01 01:06:46 24 4
gpt4 key购买 nike

假设我有以下代码行。

var instanceName = "someString"

如何获取字符串格式的实例名称,以便我可以将其用作将 var 存储在 NSUserDefaults 中的键?所以在上述情况下,我希望从 instanceName 中获取“instanceName”...

后续问题:如何使用字符串返回变量内容。例如。 “实例名称”

最佳答案

您可以使用 class_copyIvarList (据我所知,Swift 不支持可选变量),您可以从类实例中获取所有变量,遍历它们并获取名称。 p>

var aClass : AnyClass? = self.dynamicType
var propertiesCount : CUnsignedInt = 0
let propertiesInAClass : UnsafeMutablePointer<Ivar> = class_copyIvarList(aClass, &propertiesCount)

for var i = 0; i < Int(propertiesCount); i++ {
var propName:String = NSString(CString: ivar_getName(propertiesInAClass[Int(i)]), encoding: NSUTF8StringEncoding)
}//for

Playground

class Myclass{

var myInteger:Int = 1
var myBoolean:Bool = false
var myString:String = "heyStr"

func printValues(){
var aClass : AnyClass? = self.dynamicType
var propertiesCount : CUnsignedInt = 0
let propertiesInAClass : UnsafeMutablePointer<Ivar> = class_copyIvarList(aClass, &propertiesCount)

for var i = 0; i < Int(propertiesCount); i++ {
var propName:String = NSString(CString: ivar_getName(propertiesInAClass[Int(i)]), encoding: NSUTF8StringEncoding)

println(propName)
}//for
}
}

var mc:Myclass = Myclass()
mc.printValues()

输出:

myInteger
myBoolean
myString

[编辑 1]

Ivar 指的是 Objective-C 运行时:

/// An opaque type that represents an instance variable.
typealias Ivar = COpaquePointer

[编辑 2]

如果你有兴趣获取值也做两件事:

  • NSObject a.e.继承你的cass 类 Myclass:NSObject{..}
  • var propValue:任何对象! = self.valueForKey(propName)

顺便说一句,如果你想将它们存储到某个字典中,你需要首先检查它们的类型。因为您将 propValue 定义为 AnyObject

关于swift - 需要从 Swift 中的 var 获取 instanceName 作为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25648778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com