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)
它应该附加propertyname
的值,但我得到一个错误:
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)链接,所以我不确定会发生什么,但让我检查一下并感谢:)