Ios 如何在Swift中获取类的方法

Ios 如何在Swift中获取类的方法,ios,swift,class,Ios,Swift,Class,我有一门课: class myObject: NSObject { dynamic var objectId : String? dynamic var name : String? dynamic var lastName : String? dynamic var age : String? } 在我的另一个类中,我得到了该类属性的值: self.myArray.append(myObject.name!) 我可以通过添加.name来获得myObject

我有一门课:

class myObject: NSObject {
    dynamic var objectId : String?
    dynamic var name : String?
    dynamic var lastName : String?
    dynamic var age : String? 
}
在我的另一个类中,我得到了该类属性的值:

self.myArray.append(myObject.name!)
我可以通过添加
.name
来获得
myObject.name
的值,但是如果在我的
myObject
类中有数百个属性呢?为此,我想创建一个方法,该方法可以使用变量返回类的属性:

let myVar = "name"
self.myArray.append(myObject.myVar) 
它应该附加property
name
的值,但我得到一个错误:

value of myObject has no member `myVar`
我知道我为什么会出错


如何使用变量访问类的属性?类似于
:getValue(String)
的内容应该返回我类的属性。

您可以通过如下方式创建对象数组

var arrayOfObjects = [myObject]
然后设置一个对象值

var firstObject:myObject
myObject.name = "Your name"
myObject.age = "Your age"
...
然后将第一个对象附加到arrayOfObjects

arrayOfObject.append(firstObject)
你可以访问它

print("First Object's name: \(arrayOfObjects[0].name)")

您可以这样做,使数组的对象如下

var arrayOfObjects = [myObject]
然后设置一个对象值

var firstObject:myObject
myObject.name = "Your name"
myObject.age = "Your age"
...
然后将第一个对象附加到arrayOfObjects

arrayOfObject.append(firstObject)
你可以访问它

print("First Object's name: \(arrayOfObjects[0].name)")

您还应该看看
NSMutableDictionary
,下面是一个简单的示例,说明它是如何工作的

// initialise a dictionary
var dict = NSMutableDictionary(objects: ["first", "second", 42], forKeys: ["String1", "String2", "Int1"])

// add a new attribute                
dict.addEntriesFromDictionary(NSDictionary(object: "New thing", forKey: "String3") as [NSObject : AnyObject])

// access the data
let firstString = dict.valueForKey("String1")
let firstInt = dict.valueForKey("Int1")

// update the data
dict.setValue(99, forKey: "Int1")

let newValue = dict.valueForKey("Int1")

您还应该看看
NSMutableDictionary
,下面是一个简单的示例,说明它是如何工作的

// initialise a dictionary
var dict = NSMutableDictionary(objects: ["first", "second", 42], forKeys: ["String1", "String2", "Int1"])

// add a new attribute                
dict.addEntriesFromDictionary(NSDictionary(object: "New thing", forKey: "String3") as [NSObject : AnyObject])

// access the data
let firstString = dict.valueForKey("String1")
let firstInt = dict.valueForKey("Int1")

// update the data
dict.setValue(99, forKey: "Int1")

let newValue = dict.valueForKey("Int1")

我可能错了,但正如我在评论中所说的,最好使用字典并在其中存储值。另外,如果您希望使用点表示法访问某些值,但仍然能够通过字符串获取它们,则可以创建一个属性并覆盖setter和getter

class MyClass {
    var properties = [String: AnyObject]()

    var someProperty: String? {
        get {
            return properties["someProperty"] as? String
        }
        set {
            properties["someProperty"] = newValue
        }
}

通过这种方式,您可以通过
object.someProperty
object.properties[“someProperty”]
访问someProperty的值。我可能是错的,但正如我在评论中所说的,最好使用字典并在其中存储值。另外,如果您希望使用点表示法访问某些值,但仍然能够通过字符串获取它们,则可以创建一个属性并覆盖setter和getter

class MyClass {
    var properties = [String: AnyObject]()

    var someProperty: String? {
        get {
            return properties["someProperty"] as? String
        }
        set {
            properties["someProperty"] = newValue
        }
}

通过这种方式,您可以通过
object.someProperty
object.properties[“someProperty”]

访问someProperty的值。嘿,兄弟,谢谢您的回复,你能详细解释一下你的答案吗?我不明白,你在swift中处理多个对象的方法是循环并设置它们,例如在表视图控制器中,你通过数组元素设置每个单元格的数据,然后通过索引路径获取数据。哦,好的,但实际上值已经存在了,我只是想要访问该属性,我将此
myArray.append(obj.valueForKey(\(myVar)”)用作!String)
但是非常感谢您的努力,我非常感谢您的帮助。谢谢您的回复,你能详细解释一下你的答案吗?我不明白,你在swift中处理多个对象的方法是循环并设置它们,例如在表视图控制器中,你通过数组元素设置每个单元格的数据,然后通过索引路径获取数据。哦,好的,但实际上值已经存在了,我只是想要访问该属性,我将此
myArray.append(obj.valueForKey(\(myVar)”)用作!字符串)
但非常感谢您的努力,我对此表示感谢Hey@russell感谢您的回复,我想我没能在我的问题中描述我真正想要什么,我提出了此
myArray.append(obj.valueForKey(\(myVar)”)as!String)
而且它正是我想要的。谢谢你的努力,我真的很感激this@remyboys我认为在swift中这样做不是一个好主意,因为它是Objective-C特性,称为KVC,并且因为您的类是NSObject的子类(即Objective-C类)而可用。我认为Russel是对的,在类中保留数百个属性不是一个好主意,最好使用dictionaries@AntonTyutin那我该怎么做才能把它做好呢?有什么想法吗?如果是,那么请引导我Hey@russell谢谢你的回复,我想我没能在我的问题中描述我真正想要什么,我想出了这个
myArray.append(obj.valueForKey(\(myVar)”)as!String)
而且它正是我想做的。谢谢你的努力,我真的很感激this@remyboys我认为在swift中这样做不是一个好主意,因为它是Objective-C特性,称为KVC,并且因为您的类是NSObject的子类(即Objective-C类)而可用。我认为Russel是对的,在类中保留数百个属性不是一个好主意,最好使用dictionaries@AntonTyutin那我该怎么做才能把它做好呢?有什么想法吗?如果是,那么请指导我好的,让我试试这个,因为我的类也将与BackEndound(一个Mbbas)链接,所以我不确定会发生什么,但让我检查一下并感谢:)好的,让我试试这个,因为我的类也将与BackEndound(一个Mbbas)链接,所以我不确定会发生什么,但让我检查一下并感谢:)