首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MagicalRecord获取两个具有row和sections的实体并对Sections进行排序

MagicalRecord获取两个具有row和sections的实体并对Sections进行排序
EN

Stack Overflow用户
提问于 2015-09-29 10:52:51
回答 1查看 219关注 0票数 0

我有两个对象GroupExercise <->练习,需要做tableView的获取请求与部分(标题GroupExercise.name)和行(Exercise.name)如何才能获取两个实体与神奇的记录或核心数据

练习对象

代码语言:javascript
复制
    @interface Exercise : NSManagedObject
    @property (nonatomic, retain) NSString * name;
    @property (nonatomic, retain) NSNumber * timeRelax;
    @property (nonatomic, retain) NSNumber * type;
    @property (nonatomic, retain) NSNumber * uid;
    @property (nonatomic, retain) NSNumber * uidGroup;
    @property (nonatomic, retain) GroupExercise *groupEdge;

GroupExerciseObject

代码语言:javascript
复制
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * tagColor;
@property (nonatomic, retain) NSNumber * uid;
@property (nonatomic, retain) NSOrderedSet *exerciseEdge;

使用代码保存对象

代码语言:javascript
复制
- (void)parseAndSaveJson:(id)json withCompleteBlock:(void (^)())completeBlock {

NSMutableArray *groupsArray = (NSMutableArray *) json;

NSLog(@"%@", json);

if (groupsArray != nil) {

    NSArray *allEntities = [NSManagedObjectModel MR_defaultManagedObjectModel].entities;

    [allEntities enumerateObjectsUsingBlock:^(NSEntityDescription *entityDescription, NSUInteger idx, BOOL *stop) {
        [NSClassFromString([entityDescription managedObjectClassName]) MR_truncateAll];
    }];

    [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {


        for (int groupIndex = 0; groupIndex < [groupsArray count]; groupIndex++) {


            GroupExercise *localGroup = [GroupExercise MR_createEntityInContext:localContext];

            localGroup.name = groupsArray[groupIndex][LOCAL_GROUPS_NAME];

            localGroup.tagColor = groupsArray[groupIndex][LOCAL_GROUPS_TAG_COLOR];

            localGroup.uid = @([groupsArray[groupIndex][LOCAL_GROUPS_ID_GROUP] intValue]);


            NSMutableArray *exerciseArray = (NSMutableArray *) groupsArray[groupIndex][LOCAL_GROUPS_EXERCISES];

            NSMutableSet *set = [[NSMutableSet alloc] init];

            for (int exerciseIndex = 0; exerciseIndex < [exerciseArray count]; exerciseIndex++) {

                Exercise *exercise = [Exercise MR_createEntityInContext:localContext];

                exercise.name = exerciseArray[exerciseIndex][EXERCISE_NAME];
                exercise.uid = @([exerciseArray[exerciseIndex][LOCAL_EXERCISE_ID_EXERCISE] intValue]);
                exercise.uidGroup = @([groupsArray[groupIndex][LOCAL_GROUPS_ID_GROUP] intValue]);
                exercise.groupEdge = localGroup;

                [set addObject:exercise];
            }

            [localGroup addExerciseEdge:set];
        }

    }                 completion:^(BOOL contextDidSave, NSError *error) {

        completeBlock();

    }];
}
}

并使用FRC

代码语言:javascript
复制
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
    return _fetchedResultsController;
}

_fetchedResultsController = [Exercise MR_fetchAllGroupedBy:@"groupEdge" withPredicate:nil sortedBy:@"uid" ascending:true];


_fetchedResultsController.delegate = self;
return _fetchedResultsController;
}

如何使用groupEdge.name对节进行排序?

EN

回答 1

Stack Overflow用户

发布于 2015-09-30 10:52:50

我用代码解决了问题

_fetchedResultsController = [Exercise MR_fetchAllGroupedBy:@"groupEdge" withPredicate:nil sortedBy:@"uidGroup,uid" ascending:true];

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32834932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档