我创建了一个Food
对象,我希望能够设置和获取属性(例如time
)。出于某种原因,我被允许设置属性,但我无法获取get属性。我只需致电food.time
Property 'time' not found on object of type 'conts __strong id'
我不确定问题是将它放入,然后从数组中检索它,还是我的对象类是如何定义的。在这个例子中,我简化了它,以便你可以看到我是如何使用它的。
某些控制器(此处未显示其他方法)
#import "Food.h"
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray *foodArray = @[firstFood];
for (id food in foodArray) {
UILabel *foodLabel = [[UILabel alloc]
initWithFrame:CGRectMake(10, 180, self.view.frame.size.width-20, 50)];
foodLabel.backgroundColor = [UIColor clearColor];
foodLabel.text = food.time; // This line causes error
foodLabel.textColor = [UIColor blackColor];
[foodLabel setFont:[UIFont fontWithName:@"Courier" size:14]];
[self.view addSubview:foodLabel];
}
}
Food.h
#import <Foundation/Foundation.h>
@interface Food : NSObject
@property (strong, nonatomic) NSString *time;
@property (strong, nonatomic) NSString *title;
@property (strong, nonatomic) NSString *description;
@property (strong, nonatomic) NSString *place;
@end
Food.m
#import "Food.h"
@implementation Food
@end
答案 0 :(得分:3)
编译器知道food
只是一个通用的NSObject指针。您需要将其强制转换为Food
对象,或者只是在for循环中更改您的定义。
for (Food *food in foodArray) {
//...etc
}
假设firstFood
实际上是Food
个对象,因为您没有在代码段中显示它的定义。
如果您不想更改类型,可以将任何消息发送到id,并在运行时让它弄清楚它是否有效:
foodLabel.text = [food time];
也有效,但是你无法在id
类型的对象上使用点语法,无论是强制转换它还是使用标准括号语法(如果该对象没有,它将在运行时失败)回应那条消息)。