如何实现核心数据的自定义映射模型



我在核心数据模型中添加了一个新实体(Site),并添加了指向Site的与旧实体(Notification)的关系。我需要做的是用一个对象填充新实体(新对象的属性值现在在"用户默认值"中),然后将所有旧对象分配给表示关系的变量。

Site对象上的notifications变量是一对多的可选变量。Notification对象上的站点变量是一对一的,并且是必需的。

我的新对象看起来是这样的:

#import <Foundation/Foundation.h>
@interface Site : NSManagedObject
@property (nonatomic, retain) NSString *url;
@property (nonatomic, retain) NSString *accessKey;
@property (nonatomic, retain) NSString *secretKey;
@property (nonatomic, retain) NSSet *notifications;
@end

旧对象有一个新的"站点"属性:

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

@interface Notification : NSManagedObject
@property (nonatomic, retain) NSNumber *created;
@property (nonatomic, retain) NSNumber *isRead;
@property (nonatomic, retain) NSString *message;
@property (nonatomic, retain) NSNumber *notificationId;
@property (nonatomic, retain) NSString *url;
@property (nonatomic, retain) NSString *urlMarkRead;
@property (nonatomic, retain) Site *site;
@end

你知道我该怎么做吗?

您可以进行手动迁移。编写代码对你来说是一项艰巨的工作,但它会解决你的问题。

请参阅核心数据版本控制和数据迁移编程指南。在那里,您可以找到迁移过程,其中有一个名为自定义实体迁移策略的小节,描述了您的情况。

您需要创建NSEntityMigrationPolicy的子类。

最新更新