需要从Swift中的变量获取instanceName作为字符串

需要从Swift中的变量获取instanceName作为字符串,swift,Swift,假设我有下面一行代码 var instanceName = "someString" 如何以字符串格式获取实例的名称,以便将其作为键存储在NSUserDefaults中? 所以在上面的例子中,我希望从instanceName获取“instanceName” 跟进问题: 如何使用字符串返回变量内容。例如,“instanceName”您可以使用class\u copyIvarList从类实例获取所有变量(我知道Swift不支持可选变量),循环它们并获取名称 var aClass : AnyClas

假设我有下面一行代码

var instanceName = "someString"
如何以字符串格式获取实例的名称,以便将其作为键存储在NSUserDefaults中? 所以在上面的例子中,我希望从instanceName获取“instanceName”

跟进问题:
如何使用字符串返回变量内容。例如,
“instanceName”

您可以使用
class\u copyIvarList
从类实例获取所有变量(我知道Swift不支持可选变量),循环它们并获取名称

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

[编辑1]

Ivar
指的是Objective-C运行时:

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

[编辑2]

如果您对获取值感兴趣,还可以做两件事:

  • NSObject
    a.e.
    classmyclass:NSObject{..}
  • var-propValue:AnyObject!=self.valueForKey(propName)

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

,您可能还知道如何使用propName返回var吗?我尝试了“var value:AnyObject=object\u getIvar(self,class\u getInstanceVariable(self.dynamicType,propName)),但这给了我一个错误的访问…@P5ycH0你想按名称获取值吗?是的,你给了我获取ivar名称的解决方案。现在,我只需要获取我找到的每个propName的值,这样我就可以通过它的propName键将其存储在userdefaults中。我现在正在尝试“var value:AnyObject=object\u getIvar(aClass,class\u getInstanceVariable(aClass!,propName)),我在调试器中看到了我需要的值,但仍然得到了错误的访问。。。。我非常接近解决方案…@P5ycH0我添加了第二次编辑,但您必须更改您的问题,也许这对您有好处,但其他开发人员可以找到我的答案,但我的答案并不完全针对您的问题。请分别换一下。让我们来。
myInteger
myBoolean
myString
/// An opaque type that represents an instance variable.
typealias Ivar = COpaquePointer