说我有类似下面的课程
@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”谢谢
答案 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开头,然后是以大写字母开头的属性名称)