在Xcode中使用Swift核心数据
我对Swift编程比较陌生,最近第一次试用了核心数据。然而,我很难理解(对我来说)我遇到的几种奇怪行为:在Xcode中使用Swift核心数据,swift,core-data,Swift,Core Data,我对Swift编程比较陌生,最近第一次试用了核心数据。然而,我很难理解(对我来说)我遇到的几种奇怪行为: 我已经在“.xcdatamodeld”文件中创建了所有实体及其属性。Codegen处于“手动/无”状态。某些属性被标记为非可选属性。尽管如此,当我生成NSManagedObject子类文件时,我仍然将它们视为“…属性”文件中的可选文件,即在类型后面有一个“?”。为什么呢 与第一个项目符号相关/相反,某些实体的属性没有“?”,尽管它们被标记为可选。当我尝试添加“”时,我得到一个错误“属性无法
- 我已经在“.xcdatamodeld”文件中创建了所有实体及其属性。Codegen处于“手动/无”状态。某些属性被标记为非可选属性。尽管如此,当我生成NSManagedObject子类文件时,我仍然将它们视为“…属性”文件中的可选文件,即在类型后面有一个“?”。为什么呢
- 与第一个项目符号相关/相反,某些实体的属性没有“?”,尽管它们被标记为可选。当我尝试添加“”时,我得到一个错误“属性无法标记为@NSManaged,因为它的类型无法在Objective-C中表示”。为什么呢
- 当我创建NSManagedObject子类并在项目中选择要创建它们的子文件夹时,不管怎样,它们都会放在层次结构树的顶部
- 如果我更改由核心数据生成的“…Class”/“…Properties”文件中的信息会发生什么情况,这将与“.xcdatamodeld”文件中的信息冲突。什么优先?它们有什么关系
- 手动创建子类会不准确地处理选项。选中任何属性,如果在模型中是非可选的,则删除类中的问号
- 标量Swift可选类型(
,Int?
,Double?
)不能在Objective-C中表示。我建议将它们声明为非可选Bool?
- 不要紧,它对类所在的位置没有影响,主要是项目导航器中的文件名为黑色(有效),并且目标成员身份分配正确
- 在Codegen Manual/None案例中,您有责任确保模型中的类型与类中的类型匹配,否则可能会出现意外行为。类中的任何更改也必须在模型中进行,反之亦然。但是,您可以使用本机Swift类型
或Set
替换建议的ObjC类,如Date
或NSSet
,而无需更改模型中的类型Date
- 手动创建子类会不准确地处理选项。选中任何属性,如果在模型中是非可选的,则删除类中的问号
- 标量Swift可选类型(
,Int?
,Double?
)不能在Objective-C中表示。我建议将它们声明为非可选Bool?
- 不要紧,它对类所在的位置没有影响,主要是项目导航器中的文件名为黑色(有效),并且目标成员身份分配正确
- 在Codegen Manual/None案例中,您有责任确保模型中的类型与类中的类型匹配,否则可能会出现意外行为。类中的任何更改也必须在模型中进行,反之亦然。但是,您可以使用本机Swift类型
或Set
替换建议的ObjC类,如Date
或NSSet
,而无需更改模型中的类型Date