0
からString
に1つの属性タイプを変更するには、NSEntityMigrationPolicy
とcreateDestinationInstancesForSourceInstance
メソッドを使用します。ただし、既存のオブジェクトを置き換えるのではなく、新しいオブジェクトを作成します。ここでNSEntityMigrationPolicyは、既存の変更の代わりに新しいオブジェクトを作成します
は私のコードです:
#import "MessageTransformationPolicy.h"
@implementation MessageTransformationPolicy
- (BOOL)createDestinationInstancesForSourceInstance:(NSManagedObject *)sInstance
entityMapping:(NSEntityMapping *)mapping
manager:(NSMigrationManager *)manager
error:(NSError **)error
{
// Create a new object for the model context
NSManagedObject *newObject =
[NSEntityDescription insertNewObjectForEntityForName:[mapping destinationEntityName]
inManagedObjectContext:[manager destinationContext]];
// do our transfer of nsdate to nsstring
NSData *messageMetadata_dataType = [sInstance valueForKey:@"metadata"];
NSString *messageMetadata_stringType = [[NSString alloc] initWithData:messageMetadata_dataType encoding:NSUTF8StringEncoding];
// set the value for our new object
[newObject setValue:messageMetadata_stringType forKey:@"metadata"];
// do the coupling of old and new
[manager associateSourceInstance:sInstance withDestinationInstance:newObject forEntityMapping:mapping];
return YES;
}
@end
どこに問題がありますか?問題が解決し、Msg
という名前のターゲットエンティティのすべての属性を保存し、保存する方法を変更することにより、