在转发类中找不到属性

Posted

技术标签:

【中文标题】在转发类中找不到属性【英文标题】:Property can not be found in forward class 【发布时间】:2012-06-12 07:52:17 【问题描述】:

我遇到了一个困扰我一段时间的问题 - 特别是因为它对我没有任何意义。

Xcode 似乎找不到我的对象的某些属性,即使它们已正确声明。这里有一些代码:

.h 文件

@interface Start1ViewController : UIViewController 
    NSString *updatedStatus;
    NSString *updatedTime;

@property (retain, nonatomic) NSString *updatedTime;
@property (retain, nonatomic) NSString *updatedStatus;

以及各自在.m中的合成

#import "Start1ViewController.h"

@implementation Start1ViewController
@synthesize updatedStatus, updatedTime;

我想从持有上述类实例的对象访问这些属性:

#import <UIKit/UIKit.h>
@class Start1ViewController;


@interface PartyPickerViewController : UIViewController 

IBOutlet UIDatePicker *datePicker;
Start1ViewController *start1ViewController;
  

.m

-(IBAction)buttonPressed:(id)sender

NSDate *selected =[datePicker date];
NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];
[timeFormatter setDateFormat:@"HH:mm"];
NSString *dateString = [timeFormatter stringFromDate:selected];
[start1ViewController setUpdatedStatus:@"Party"];
[start1ViewController setUpdatedTime:dateString];
[self.navigationController popViewControllerAnimated:YES];

Xcode 告诉我 setUpdatedStatus 和 setUpdatedTime 不存在......而且它们不起作用。我尝试使用 start1ViewController.updatedStatus=@"派对"; 相反,但这根本不会说“在 Start1ViewController 类的对象上找不到属性更新状态”

我之前遇到过这个问题,那次我通过在使用 .-notation 和显式使用 setter 方法之间多次切换,以某种方式让它工作,但即使在它确实工作的其他情况下,我仍然收到警告使用 .notation 时的方法和“找不到属性”

有问题的属性是简单的 NSString,所以我怀疑可能是其他类不知道 NSString 类的问题?

提前感谢您的帮助! =)

【问题讨论】:

【参考方案1】:

您是否在PartyPickerViewController.m 中导入了Start1ViewController.h? 因为当您在接口中使用@class 时,您只需向编译器承诺有一个名为Start1ViewController 的类。 但是之后你需要在你的实现中导入Start1ViewController.h,以使Start1ViewController.h,它的属性和方法对其他类可见。

【讨论】:

您好,非常感谢!不敢相信我错过了,有时您只是通过查看自己的代码而失明。仍然很奇怪我在早期版本的课程中工作,#import 也不见了

以上是关于在转发类中找不到属性的主要内容,如果未能解决你的问题,请参考以下文章

休眠映射 - 在类中找不到属性名称的设置器

在扩展类中找不到符号[关闭]

我在 FirebaseRecyclerAdapter 类中找不到 populateViewHolder 方法

Java-在类中找不到主要方法

Android ant 构建:proguard 在 ViewConfigurationCompatFroyo 类中找不到引用的方法

java运行中找不到main方法