gpt4 book ai didi

ios - 类别中的 NSManagedObject 子类属性

转载 作者:行者123 更新时间:2023-12-01 17:37:50 29 4
gpt4 key购买 nike

NSManagedObject 子类属性是在其类别文件中创建的,这是非常连线的,因为类别只能有方法。详情如下:

(1).我在 .xcdatamodeld 文件中创建了一个名为 BibleAudio 的实体,该实体具有以下几个属性。

enter image description here

(2)。 xcode 生成的 objective-c 文件是“BibleAudio + CoreDataProperties.h”、“BibleAudio + CoreDataProperties.m”和“BibleAudio.h”、“BibleAudio.m”,如下所示:

enter image description here

(3)。在“BibleAudio + CoreDataProperties.h”中,BibleAudio 的属性在这里被声明为属性(见下文);而在“BibleAudio.h”中,它是空的。据我所知,“BibleAudio + CoreDataProperties.h”是一个类别文件,这里只能声明方法。因此,我认为正确的方法是在“BibleAudio.h”中声明属性,如果你想为这个 NSManagedObject 子类添加方法,你应该使用一个类别来添加该方法。

BibleAudio + CoreDataProperties.h
BibleAudio + CoreDataProperties.h

圣经音频.h
BibleAudio.h

有人知道我的理解是否正确吗?或者如果我错了,那背后的逻辑是什么?

最佳答案

在以前的 Xcode 版本中,只为每个版本创建一个类
核心数据实体,例如BibleAudio.h/.m 中的“BibleAudio”类.每次您都覆盖这些文件
重新创建了托管对象子类。因此,要添加
你自己的核心数据类的功能,你必须定义
类上的一个类别(在单独的文件中)。

巨大的劣势
是您可以在类类别中添加方法,但不能
实例变量。所以你不能添加一个简单的属性
(由实例变量支持)。一种可能的解决方法是
在实体中定义一个 transient 属性,但这也
缺点。

现在 Xcode 创建了一个基本上是空的类“BibleAudio”(在 BibleAudio.h/.m 中),
和类别“BibleAudio (CoreDataProperties)”BibleAudio + CoreDataProperties.h/.m类别文件包含所有核心数据属性,并且是
重新创建托管对象子类时被覆盖。

类文件BibleAudio.h/.m只创建一次并且永远不会被覆盖。你可以在那里添加功能:方法和以前一样,还有自定义属性和实例变量。因为它是一个类
而不是一个类别,旧的限制不再适用。

关于ios - 类别中的 NSManagedObject 子类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34063965/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com