You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode13编译CoreData分类时提示Property has a previous declaration如何解决

问题原因

Xcode 13调整了CoreData实体代码生成的默认触发逻辑,当你手动创建了MyClass+CoreDataProperties分类的同时,CoreData实体的Codegen配置没有关闭自动生成,Xcode就会在构建时自动生成一份完全相同的分类文件,导致重复声明冲突。你另一个同结构项目正常运行,是因为对应实体的Codegen配置已经设置为不自动生成代码。

解决方案

方案一:保留手动创建的分类文件(推荐,适合需要自定义分类逻辑的场景)

  1. 打开项目中的.xcdatamodeld数据模型文件,选中MyClass对应的实体
  2. 打开右侧工具栏的数据模型检查器(第三个标签,图标为标尺样式)
  3. 找到Codegen下拉选项,将默认的Class Definition/Category/Extension修改为Manual/None
  4. 按下Command+Shift+K清理项目缓存,重新构建即可解决报错

方案二:使用Xcode自动生成的分类文件

如果不需要对MyClass+CoreDataProperties分类做自定义修改,可以直接删除你手动创建的MyClass+CoreDataProperties.h和对应的.m文件,Xcode自动生成的分类会默认集成到项目中,不需要额外导入头文件即可正常使用实体属性。

异常排查

如果修改配置后依然报错,可尝试以下操作:

  • 检查项目中是否存在多个重名的MyClass实体,避免跨数据模型重复生成代码
  • 进入Xcode偏好设置 -> Locations -> Derived Data,删除当前项目对应的派生数据文件夹后重新构建
  • 确认MyClass+CoreDataProperties.h没有被重复引入到多个预编译头文件中

你提供的分类文件语法本身没有问题:

#import "MyClass.h"

NS_ASSUME_NONNULL_BEGIN

@interface MyClass (CoreDataProperties)

+ (NSFetchRequest<MyClass *> *)fetchRequest NS_SWIFT_NAME(fetchRequest());

@property (nullable, nonatomic, copy) NSNumber *choice;
@property (nullable, nonatomic, copy) NSString *content;
@property (nullable, nonatomic, copy) NSString *correctAnswer;
@property (nullable, nonatomic, retain) NSObject *extraData;
@property (nonatomic) BOOL isCorrect;
@property (nullable, nonatomic, copy) NSDate *timeAnswered;
@property (nullable, nonatomic, copy) NSDate *timeAsked;

@end

NS_ASSUME_NONNULL_END

内容的提问来源于stack exchange,提问作者Andrew f0s3 Kosenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:39:03