在swift

时间:2016-02-25 09:05:07

标签: ios swift class

嘿伙计们,我刚从java转到快速,我只是陷入困境:

我有一个班级 -

class myObject: NSObject {
    dynamic var objectId : String?
    dynamic var name : String?
    dynamic var lastName : String?
    dynamic var age : String? 
}

在我的其他课程中,我正在获得这个类的属性 -

self.myArray.append(myObject.name!)

我可以通过手动设置myObject.name来获取.name的值,但如果我的myObject类中有数百个属性,我想创建一个可以创建的方法使用如下变量返回我班级的属性:

let myVar = "name"
self.myArray.append(myObject.myVar) 

它应附加属性name

的值

但是收到错误

value of myObject has no member `myVar`

我知道为什么会收到错误

所以我的问题是如何通过使用变量来获取对我的类的属性的访问权限说:getValue(String)应该返回我的类的属性:我甚至不知道从哪里开始一条线索或提示将非常感激,

如果我的问题不够明确,请让我知道我会解决它

谢谢

3 个答案:

答案 0 :(得分:1)

您还应该看看// 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") ,这是一个快速示例,展示了它的工作原理

if [ ! -f /data/cmts_dhcp_link_map_*.csv ]; 
then

cd data

curr=`pwd`
echo $curr

bad_file=`find . -type f -not -name 'dhcp_map_*.csv' -a -type f -not -name 'cmts_map_*csv' -a -type f -not -name 'cmts_dhcp_link_map_*.csv'`
BAD_FILE_LINK=$(basename "$bad_file")

echo $BAD_FILE_LINK

echo "Bad File Found please check bad folder"

mv $BAD_FILE_LINK ../bad/$BAD_FILE_LINK.bad

fi

cd ..

if [ ! -f dhcp_map_*.csv ]; 
then

cd data

curr=`pwd`
echo $curr

bad_file=`find . -type f -not -name 'dhcp_map_*.csv' -a -type f -not -name 'cmts_map_*csv' -a -type f -not -name 'cmts_dhcp_link_map_*.csv'`
BAD_FILE_DHCP=$(basename "$bad_file")

echo $BAD_FILE_DHCP

echo "Bad File Found please check bad folder"

mv $BAD_FILE_DHCP ../bad/$BAD_FILE_DHCP.bad

fi

cd ..

if [ ! -f cmts_map_*csv ]; 
then

cd data

curr=`pwd`
echo $curr

bad_file=`find . -type f -not -name 'dhcp_map_*.csv' -a -type f -not -name 'cmts_map_*csv' -a -type f -not -name 'cmts_dhcp_link_map_*.csv'`
BAD_FILE_CMTS=$(basename "$bad_file")

echo $BAD_FILE_CMTS

echo "Bad File Found please check bad folder"

mv $BAD_FILE_CMTS ../bad/$BAD_FILE_CMTS.bad

fi

cd ..

答案 1 :(得分:1)

我可能错了,但正如我在评论中已经说过的那样,最好使用Dictionary并在其中存储值。此外,如果您想使用点符号访问某些值,但仍然可以通过字符串获取它们,您只需创建一个属性并覆盖setter和getter

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

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

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

访问someProperty的值

答案 2 :(得分:0)

你可以像下面那样制作对象数组

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)")