2014-12-19 2 views
2

나는 하나씩 많은 coredata 프로젝트를 가지고 있습니다. 여기 coredata 일대 다 관계 CoreDataGeneratedAccessors

@class Categories, Tags; 

@interface Content : NSManagedObject 

@property (nonatomic, retain) NSString * title; 
@property (nonatomic, retain) NSString * body; 
@property (nonatomic, retain) Categories *category; 
@property (nonatomic, retain) NSSet *tags; 
@end 

@interface Content (CoreDataGeneratedAccessors) 

- (void)addTagsObject:(Tags *)value; 
- (void)removeTagsObject:(Tags *)value; 
- (void)addTags:(NSSet *)values; 
- (void)removeTags:(NSSet *)values; 

내 구현 : 여기 내 .H는
NSError *error = nil; 

    // Categories: 

    NSManagedObjectContext *moc = [self managedObjectContext]; 
    NSEntityDescription *contentDescription = [ NSEntityDescription entityForName:@"Categories" inManagedObjectContext:moc]; 

    NSFetchRequest *categoRequest = [NSFetchRequest new]; 
    categoRequest.entity = contentDescription; 
    NSPredicate *categoPredicate = [NSPredicate predicateWithFormat:@"category like %@", _dropMenuOulet.stringValue]; 
    categoRequest.predicate = categoPredicate; 

    NSArray *results = [moc executeFetchRequest:categoRequest error:&error]; 

    Categories *catego = (Categories*) [results objectAtIndex:0]; 

// Tags: 

    NSEntityDescription *tagsDescription = [ NSEntityDescription entityForName:@"Tags" inManagedObjectContext:moc]; 
    NSFetchRequest *tagsRequest = [NSFetchRequest new]; 
    tagsRequest.entity = tagsDescription; 
    NSArray *tagsResults = [moc executeFetchRequest:tagsRequest error:&error]; 

    NSMutableArray *tagArray = [ NSMutableArray new]; 


    for (NSManagedObject *obj in tagsResults) 
    { 

     //firstName = [obj valueForKey:@"firstName"]; 
     Tags *storeTag = [obj valueForKey:@"tag"]; 
     [tagArray addObject:storeTag]; 
    } 
    Content *content1 = [NSEntityDescription insertNewObjectForEntityForName:@"Content" inManagedObjectContext:moc]; 

    content1.category = catego; 
    content1.title = _titleOutlet.stringValue; 
    content1.body = _bodyOutlet.stringValue; 

    NSMutableSet *tagSet = [NSMutableSet set]; 

    for (int i = 0 ; i <tagArray.count; i++) 
    { 
     Tags *myTag = [tagArray objectAtIndex:i ]; 
     [tagSet addObject:myTag]; 

    } 

    content1.tags = tagSet; 

그러나

이 줄에 "content1.tags = 태그 세트;" 다음과 같은 오류가 나타납니다.

[NSTaggedPointerString managedObjectContext]: unrecognized selector sent to instance 0x696669637355 
NSTaggedPointerString managedObjectContext]: unrecognized selector sent to instance 0x696669637355 

내가 그 오류를 잘못 이해하고 있다면 정말 고마워.

답변

3

NSMutableSet *tagSet에는 Tags 인스턴스가 아닌 개체 (아마도 NSString 인스턴스)가 들어있는 것 같습니다. 이 라인에

:

Tags *storeTag = [obj valueForKey:@"tag"]; 
[tagArray addObject:storeTag]; 

당신은 tag 속성보다는 Tags 인스턴스 자체를 추가.

는 어쩌면 단지와 그 두 줄을 바꿉니다

[tagArray addObject:obj]; 
+0

관련없는,하지만 당신은 왜 당신의 설정을 구축하기 위해 몇 줄의 나중에 반복하는 배열을 만들려면 어떻게해야합니까? 코드가 작동하면 최적화 할 수 있습니다. – picciano

+0

이 작품에 큰 감사를드립니다. 그러나 내용 당 태그의 내용을 원한다면 태그 = "<관계 오류 : 0x60000002d820 '태그'>"; . 어떻게 콘텐츠의 태그에 액세스 할 수 있습니까? – user2924482

+0

나는 당신의 질문에 꽤 답하고 있지 않습니다. 그러나 어쨌든 나는 의견을 묻기보다는 새로운 질문을 게시하는 것이 좋습니다. 커뮤니티에서 더 나은 가시성을 얻을 수 있습니다. – picciano