通过赋值访问对象属性

时间:2013-08-08 10:23:21

标签: objective-c

说我有类似下面的课程

@interface Restaurant : NSObject
    @property (nonatomic,strong) NSString *restaurantID;
    @property (nonatomic,strong) NSString *restaurantName;
    @property (nonatomic,strong) NSString *restaurantAddress;

@end

如果我创建一个“餐馆”对象说“休息”,我可以访问rest.restaurantID等属性。

我的问题是,如果我正在分配对象,如何访问属性。这样的事情

Restaurant *rest = [[Restaurant alloc]init];
[rest setRestaurantName:@"MCD"]; 

id proxyObject;
proxyObject = rest;

如何使用proxyObject而不是rest?

访问属性“restaurantName”

谢谢

2 个答案:

答案 0 :(得分:1)

在Objective-C中有很多种方法,你可以简单地强制将代理对象反馈给一个Restaurant实例:

id proxyObject;
proxyObject = rest;
[(Restaurant)proxyObject restaurantName];

或者您可以使用键/值编码:

[proxyObject valueForKey:@"restaurantName"];

另一种方法是声明一个声明餐馆名称的协议,然后在餐馆类中实现该协议,之后你可以使用协议实例直接在其上调用getter restaurantName

答案 1 :(得分:0)

通过使用 id 动态类型,您无法使用dotSyntax访问该属性,但您可以使用自动生成的访问器方法。 如果你有一个名为var的@property,你可以使用getter

- (id) var;

和二传手

- setVar:(id)var;

在你的情况下意味着你​​可以像

那样编码
[proxyObject setRestaurantId:@"anID"] // setter
NSString * restId = [proxyObject restaurantID]; //getter

等每个@property。

(看看getter是如何完全是你的属性的名称以及setter名称如何以set开头,然后是以大写字母开头的属性名称)