Core Data实体导入FormField.h时出现'illegal interface qualifier'错误求助
嘿,我之前在Core Data开发中也踩过这个编译错误的坑,给你整理几个最可能的原因和对应的解决办法:
循环引用问题
大概率是你的Core Data实体头文件和FormField.h互相导入了。比如你在实体头里导入了FormField.h,而FormField.h又导入了这个实体的头文件,编译器就会混乱。
解决办法:在实体的头文件里用前向声明替代直接导入,也就是把#import "FormField.h"改成@class FormField;,然后在实体的.m文件里再导入FormField.h就好。导入位置错误
检查一下你是不是在Core Data实体的@interface块内部导入了FormField.h?比如像下面这种错误写法:@interface MyCoreDataEntity : NSManagedObject #import "FormField.h" // 这里绝对不能放导入语句! // ... 实体属性 @end所有的
#import都应该放在文件最顶部,@interface块的外面。FormField.h本身存在语法问题
有时候这个错误不是你的Core Data实体的问题,而是FormField.h自己的代码有语法错误——比如重复定义@interface、缺少@end、用了非法的修饰符等等。编译器在导入它的时候报错,却把错误指向了你的实体文件。你可以单独编译FormField.m,看看它自己有没有编译错误。自动生成的Core Data实体代码被破坏
如果你手动修改过Core Data自动生成的实体头文件/实现文件,不小心破坏了代码结构(比如在@interface里加了奇怪的内容),也可能触发这个错误。可以试试删除现有的实体类文件,然后从你的.xcdatamodeld文件里重新生成实体代码。
如果上面的方法都没解决问题,可以把你的实体头文件和FormField.h的相关代码片段贴出来,这样能更精准地定位问题~
内容的提问来源于stack exchange,提问作者iPhone

