gpt4 book ai didi

ios - 带有@property 的简单类示例不允许属性检索

转载 作者:行者123 更新时间:2023-11-28 20:07:24 31 4
gpt4 key购买 nike

我创建了一个 Food 对象,我希望能够设置和获取其属性(例如 time)。出于某种原因,我可以设置属性,但我无法获取属性。我通过简单地调用 food.time

收到以下错误
Property 'time' not found on object of type 'conts __strong id'

我不确定问题是否在于将它放入数组然后从数组中检索它,或者它是否是我的对象类的定义方式。在此示例中,我对其进行了简化,以便您了解我是如何使用它的。

一些 Controller (这里没有显示其他方法)

#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];
}
}

食物.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

食物.m

#import "Food.h"

@implementation Food

@end

最佳答案

就编译器所知,food 只是一个通用的 NSObject 指针。您要么需要将其转换为 Food 对象,要么只在 for 循环中更改您的定义。

for (Food *food in foodArray) {
//...etc
}

假设 firstFood 实际上是一个 Food 对象,因为您没有在代码段中显示它的定义。

如果你不想改变类型,你可以向id发送任何消息,让它在运行时判断它是否有效:

foodLabel.text = [food time];

也是有效的,但是您不能在 id 类型的对象上使用点语法,要么强制转换它,要么使用标准的括号语法(如果那样的话,它将在运行时失败对象不响应该消息)。

关于ios - 带有@property 的简单类示例不允许属性检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21642361/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com