调用Constants类changeDateFormat方法时遇Property not found错误求助
解决OC中调用类方法出现「Property not found on object of type」错误
我来帮你搞定这个问题!你遇到的错误本质是误用了OC的语法规则——点语法是用来访问属性的,而类方法需要用方括号的调用格式,下面一步步来解决:
1. 确认Constants类的方法声明是否正确
首先打开Constants.h,确保你正确声明了类方法(注意是+号开头,代表类方法):
@interface Constants : NSObject // 正确的类方法声明:+开头,带参数和返回值 + (NSString *)changeDateFormat:(NSString *)originalDateString; @end
如果你的声明是-开头,那是实例方法,需要先创建Constants实例才能调用,但你要的是类方法,所以必须用+。
2. 修正ViewController中的调用方式
你现在写的Constants.changeDateFormat:@"Mar 11 2018"是错误的点语法用法,OC中类方法的调用必须用方括号格式:
// 正确调用类方法的方式 NSString *resultDate = [Constants changeDateFormat:@"Mar 11 2018"];
点语法(.)仅适用于属性访问或者getter/setter方法,比如self.userName或者label.text,类方法不属于属性范畴,所以编译器会误认为你在访问一个不存在的changeDateFormat属性,从而抛出错误。
3. 额外检查:确保ViewController导入了Constants头文件
最后别忘了在你的ViewController实现文件顶部导入Constants.h,否则编译器找不到这个类的方法声明:
#import "ViewController.h" #import "Constants.h" // 必须添加这一行 @implementation ViewController // ... 你的代码 @end
按照这几步修改后,错误应该就能解决啦!
内容的提问来源于stack exchange,提问作者Palash Bairagi
相关产品推荐
相关产品推荐

