2
개체 삽입/추가를 시도했지만 몇 시간이 걸렸지 만 중복 된 레코드가 발생했습니다. 캠페인 레코드가 이미 삽입되어 있어도 다시 삽입되었습니다. 내가 놓친 게 있니? Card.hRestKit 수동으로 개체 저장
@class Campaign;
@interface Card : NSManagedObject
@property (nonatomic, strong) NSNumber* cardId;
@property (nonatomic, strong) NSString* name;
@property (nonatomic, strong) Campaign* campaign;
@end
ViewController.m
Campaign.h
@interface Campaign : NSManagedObject
@property (nonatomic, strong) NSNumber* campaignId;
@property (nonatomic, strong) NSString* title;
@end
: 아래
내 코드입니다...
Campaign* campaign = [Campaign object];
campaign.campaignId = [NSNumber numberWithInt:1];
campaign.title = @"Hello world";
Card* card = [Card object];
card.cardId = @"1234567890";
card.campaign = campaign;
[[[RKObjectManager sharedManager] objectStore] save:nil];
EDITED ViewController.m는
...
RKManagedObjectMapping* cardMapping = [RKManagedObjectMapping mappingForClass:[Card class] inManagedObjectStore:[RKObjectManager sharedManager].objectStore];
[cardMapping mapKeyPath:@"id" toAttribute:@"cardId"];
[campaignMapping mapKeyPath:@"name" toAttribute:@"name"];
cardMapping.primaryKeyAttribute = @"cardId";
RKManagedObjectMapping* campaignMapping = [RKManagedObjectMapping mappingForClass:[Campaign class] inManagedObjectStore:[RKObjectManager sharedManager].objectStore];
[campaignMapping mapKeyPath:@"id" toAttribute:@"campaignId"];
[campaignMapping mapKeyPath:@"title" toAttribute:@"title"];
campaignMapping.primaryKeyAttribute = @"campaignId";
Campaign* campaign = [Campaign object];
campaign.campaignId = [NSNumber numberWithInt:1];
campaign.title = @"Hello world";
Card* card = [Card object];
card.cardId = @"1234567890";
card.campaign = campaign;
[[[RKObjectManager sharedManager] objectStore] save:nil];
.primaryKeyAttribute (위 편집 참조)로 코드를 업데이트했지만 여전히 캠페인 엔티티에서 중복 된 레코드가 표시됩니다. 그것은 RKObjectManager loadObjectsAtResourcePath와 잘 작동하지만 수동으로 객체를 추가하려고 할 때는 그렇지 않습니다. – Teon
예. 핵심 데이터 작업을 수행하는 중이면 자신이 원하는 경우 고유 한 ID를 생성해야합니다. card.campaign을 설정하면 관계를 저장하므로 핵심 데이터에는 sqlite db를 살펴 보지 않으면 볼 수없는 자체 내부 ID가 있습니다. 당신이 원할 수있는 유일한 이유는 당신이 원격 데이터베이스에 동기화하고 그들과 동기화하고 싶다면,하지만 내가 말했던 것처럼 코드에서 직접해야 할 필요가있다. –
http://stackoverflow.com/questions/10264224/auto-index-for-a-coredata-in-objective-c를 참조하십시오. –