簡體   English   中英

coredata一對多關系CoreDataGeneratedAccessors

[英]coredata one to many relationship CoreDataGeneratedAccessors

我有一個一對多的coredata項目。 這是我的.h:

@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;

這是我的實現:

    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 = tagSet;” 我收到以下錯誤:

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

如果您知道我在做錯該怎么做的錯誤,我將不勝感激。

看起來您的NSMutableSet *tagSet包含不是Tags實例的對象(可能是NSString實例)。

在這些行上:

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

您要添加tag屬性,而不是Tags實例本身。

也許只需將這兩行替換為:

[tagArray addObject:obj];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM