gpt4 book ai didi

ios - xcode 7 生成具有附加 CoreDataProperties 类别的核心数据实体

转载 作者:IT王子 更新时间:2023-10-29 07:43:24 25 4
gpt4 key购买 nike

我在 xcode 7 中有一个奇怪的新功能,当我生成新的 NSManagedObject 子类时,xcode 创建两个类:实体和它们的 CoreDataProperties 类别,其中包含完整的实现。在下面的图片中,我的意思就是这个例子。

enter image description here

我找不到任何关于这个的文档信息,谁能解释为什么它如此有效

最佳答案

我刚注意到这一点,也找不到任何关于它的文档,但我已经试验过这个新功能,它是这样工作的。当您第一次从 Core Data 模型生成 NSManagedObject 子类时,Xcode 将生成 4 个文件:

DBUser.h

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

NS_ASSUME_NONNULL_BEGIN

@interface DBUser : NSManagedObject

// Insert code here to declare functionality of your managed object subclass

@end

NS_ASSUME_NONNULL_END

#import "DBUser+CoreDataProperties.h"

DBUser.m

#import "DBUser.h"

@implementation DBUser

// Insert code here to add functionality to your managed object subclass

@end

DBUser+CoreDataProperties.h

#import "DBUser.h"

NS_ASSUME_NONNULL_BEGIN

@interface DBUser (CoreDataProperties)

@property (nullable, nonatomic, retain) NSNumber *id;
@property (nullable, nonatomic, retain) NSString *name;

@end

NS_ASSUME_NONNULL_END

DBUser+CoreDataProperties.m

#import "DBUser+CoreDataProperties.h"

@implementation DBUser (CoreDataProperties)

@dynamic id;
@dynamic name;

@end

现在您可以看到,所有属性都在一个单独的文件中,类别为 (CoreDataProperties)。稍后,如果您为同一模型生成 NSManagedObject 子类,Xcode 7 将仅重新生成 2 个类别为(DBUser+CoreDataProperties.h 和 DBUser+CoreDataProperties.m)的文件,以更新模型中的所有属性,但不会对其他 2 个文件进行任何更改(DBUser.h 和 DBUser.m)所以您可以使用这两个文件添加一些自定义方法或属性等。

在以前的版本中,Xcode 始终只生成 2 个文件(DBUser.h 和 DBUser.m),并将属性放在那里,因此您无法轻易修改这些文件,因为每次重新生成子类时,您的自定义实现都会被删除。因此,一种常见的做法是手动创建一个类别并将您的方法放在您的类别中,这与我们在 Xcode 7 中看到的相反。然而,这有很多缺点,因为我们必须使用一个类别来实现我们的方法,而这个类别不允许做某些事情,现在我们可以轻松修改主界面和实现文件,这允许我们用它做任何事情。欢呼!

关于ios - xcode 7 生成具有附加 CoreDataProperties 类别的核心数据实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33106098/

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