Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Xcode中使用Swift核心数据_Swift_Core Data - Fatal编程技术网

在Xcode中使用Swift核心数据

在Xcode中使用Swift核心数据,swift,core-data,Swift,Core Data,我对Swift编程比较陌生,最近第一次试用了核心数据。然而,我很难理解(对我来说)我遇到的几种奇怪行为: 我已经在“.xcdatamodeld”文件中创建了所有实体及其属性。Codegen处于“手动/无”状态。某些属性被标记为非可选属性。尽管如此,当我生成NSManagedObject子类文件时,我仍然将它们视为“…属性”文件中的可选文件,即在类型后面有一个“?”。为什么呢 与第一个项目符号相关/相反,某些实体的属性没有“?”,尽管它们被标记为可选。当我尝试添加“”时,我得到一个错误“属性无法

我对Swift编程比较陌生,最近第一次试用了核心数据。然而,我很难理解(对我来说)我遇到的几种奇怪行为:

  • 我已经在“.xcdatamodeld”文件中创建了所有实体及其属性。Codegen处于“手动/无”状态。某些属性被标记为非可选属性。尽管如此,当我生成NSManagedObject子类文件时,我仍然将它们视为“…属性”文件中的可选文件,即在类型后面有一个“?”。为什么呢
  • 与第一个项目符号相关/相反,某些实体的属性没有“?”,尽管它们被标记为可选。当我尝试添加“”时,我得到一个错误“属性无法标记为@NSManaged,因为它的类型无法在Objective-C中表示”。为什么呢
  • 当我创建NSManagedObject子类并在项目中选择要创建它们的子文件夹时,不管怎样,它们都会放在层次结构树的顶部
  • 如果我更改由核心数据生成的“…Class”/“…Properties”文件中的信息会发生什么情况,这将与“.xcdatamodeld”文件中的信息冲突。什么优先?它们有什么关系
总的来说,我发现除了介绍性的内容外,没有太多关于核心数据的详细描述。有人知道这方面的好资源吗?网站?Youtube视频?书籍?

答案:

  • 手动创建子类会不准确地处理选项。选中任何属性,如果在模型中是非可选的,则删除类中的问号

  • 标量Swift可选类型(
    Int?
    Double?
    Bool?
    )不能在Objective-C中表示。我建议将它们声明为非可选

  • 不要紧,它对类所在的位置没有影响,主要是项目导航器中的文件名为黑色(有效),并且目标成员身份分配正确

  • 在Codegen Manual/None案例中,您有责任确保模型中的类型与类中的类型匹配,否则可能会出现意外行为。类中的任何更改也必须在模型中进行,反之亦然。但是,您可以使用本机Swift类型
    Set
    Date
    替换建议的ObjC类,如
    NSSet
    Date
    ,而无需更改模型中的类型

答案:

  • 手动创建子类会不准确地处理选项。选中任何属性,如果在模型中是非可选的,则删除类中的问号

  • 标量Swift可选类型(
    Int?
    Double?
    Bool?
    )不能在Objective-C中表示。我建议将它们声明为非可选

  • 不要紧,它对类所在的位置没有影响,主要是项目导航器中的文件名为黑色(有效),并且目标成员身份分配正确

  • 在Codegen Manual/None案例中,您有责任确保模型中的类型与类中的类型匹配,否则可能会出现意外行为。类中的任何更改也必须在模型中进行,反之亦然。但是,您可以使用本机Swift类型
    Set
    Date
    替换建议的ObjC类,如
    NSSet
    Date
    ,而无需更改模型中的类型


谢谢瓦迪安。但在Codegen手册/None案例中,我需要确保模型和类之间的一致性的是什么?因为一旦我(例如)在类定义或类似定义中删除“?”,我就已经没有对齐,不是吗?是否只是属性/关系名称及其类型?你有什么资源可以让我了解更多吗?名称、基本类型和可选状态必须匹配,关于类型(对一个或多个)必须匹配的关系。如果删除类中的问号,则必须在模型中声明非可选属性。如果在模型中更改名称,也必须在类中更改名称。一个很好的资源是苹果核心数据编程指南。但在Codegen手册/None案例中,我需要确保模型和类之间的一致性的是什么?因为一旦我(例如)在类定义或类似定义中删除“?”,我就已经没有对齐,不是吗?是否只是属性/关系名称及其类型?你有什么资源可以让我了解更多吗?名称、基本类型和可选状态必须匹配,关于类型(对一个或多个)必须匹配的关系。如果删除类中的问号,则必须在模型中声明非可选属性。如果在模型中更改名称,也必须在类中更改名称。一个好的资源是苹果核心数据编程指南。请一次只问一个问题。请一次只问一个问题。