在转发类中找不到属性
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 方法
Android ant 构建:proguard 在 ViewConfigurationCompatFroyo 类中找不到引用的方法