Отображение логического свойства из JSON в NSManagedObject с помощью RestKit

Я сталкиваюсь с чем-то таинственным. У меня есть логическое свойство в подклассе NSManagedObject "ReinspectionTask". Свойство "isOpen" указывает, нужно ли еще выполнить задачу. В Core Data тип атрибута имеет значение Boolean. Свойство объявляется как NSNumber. Я вытаскиваю JSON с сервера, и он выглядит так:

  [
    {
        "jobID":"73",
        "address":"500 17th Ave. ",
        "city":"Santa Cruz",
        "state":"California",
        "inspections":[
        {
            "inspectionID":"186",
            "inspectionType":"Foundation",
            "mediaKey":"777",
            "hasTasks":true,
            "requestSubmitted":false,
            "reinspectionTasks":[
            {
                 "taskID":"75",
                 "title":"Foundation re-inspection item",
                 "requestText":"Need a photo of <something>",
                 "isOpen":false
            },
            "wasApproved":false,
            "isScheduled":false,
            "hasAvailableTimes":false,
            "availableTimes":[]

       ]
      }
     ]
    }
   ]

Затем я сопоставляю JSON с моей управляемой объектной моделью с помощью RestKit со следующим кодом:

        RKManagedObjectMapping *jobMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Job"];
        RKManagedObjectMapping *inspectionMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Inspection"];
        RKManagedObjectMapping *reinspectionTaskMapping = [RKManagedObjectMapping mappingForEntityWithName:@"ReinspectionTask"];

        jobMapping.primaryKeyAttribute = @"jobID";
        [jobMapping mapKeyPath:@"address" toAttribute:@"address"];
        [jobMapping mapKeyPath:@"city" toAttribute:@"city"];
        [jobMapping mapKeyPath:@"state" toAttribute:@"state"];
        [jobMapping mapKeyPath:@"jobID" toAttribute:@"jobID"];
        [jobMapping mapRelationship:@"inspections" withMapping:inspectionMapping];
        [[RKParserRegistry sharedRegistry] setParserClass:[[RKParserRegistry sharedRegistry] 


                                                           parserClassForMIMEType:RKMIMETypeJSON] 
                                              forMIMEType:@"text/html"];

        inspectionMapping.primaryKeyAttribute = @"inspectionID";
        [inspectionMapping mapKeyPathsToAttributes:
         @"inspectionID", @"inspectionID",
         @"inspectionTime", @"inspectionTime", 
         @"inspectionType", @"inspectionType", 
         @"inspector", @"inspector", 
         @"isScheduled", @"isScheduled", 
         @"mediaKey", @"mediaKey", 
         @"requestSubmitted", @"requestSubmitted", 
         @"hasAvailableTimes", @"hasAvailableTimes", 
         @"availableTimes", @"availableTimes", 
         @"hasTasks", @"hasTasks",
         @"wasApproved", @"wasApproved", nil];
        [inspectionMapping mapRelationship:@"reinspectionTasks" withMapping:reinspectionTaskMapping];
        [inspectionMapping mapRelationship:@"job" withMapping:jobMapping];

        reinspectionTaskMapping.primaryKeyAttribute = @"taskID";
        [reinspectionTaskMapping mapKeyPath:@"taskID" toAttribute:@"taskID"];
        [reinspectionTaskMapping mapKeyPath:@"title" toAttribute:@"title"];
        [reinspectionTaskMapping mapKeyPath:@"requestText" toAttribute:@"requestText"];
        [reinspectionTaskMapping mapKeyPath:@"isOpen" toAttribute:@"isOpen"];
        [reinspectionTaskMapping mapRelationship:@"inspection" withMapping:inspectionMapping];

    [objectManager.mappingProvider setMapping:jobMapping forKeyPath:@"job"];
    [objectManager.mappingProvider setMapping:inspectionMapping forKeyPath:@"inspection"];
    [objectManager.mappingProvider setMapping:reinspectionTaskMapping forKeyPath:@"reinspectionTasks"];

Все это отлично работает по большей части. Однако у меня возникла проблема с свойством isOpen BOOL в ReinspectionTask. Когда я регистрирую значение на консоли, он возвращает null. Странно то, что, насколько я могу судить, я создал это свойство, как hasTasks, isScheduled и т.д. Эти свойства BOOL работают нормально.

Я должен упомянуть, что отношения Inspection to ReinspectionTasks являются отношением to-many. Требует ли такого рода отношения, что я делаю еще один шаг в настройке сопоставления объектов в RestKit?

Или это может быть связано с тем, что объект ReinspectionTask больше вложен в структуру JSON?

Любые мысли или предложения более чем приветствуются. Огромное спасибо.

Ответ 1

Ну, есть только два вопроса, на которые довольно легко ответить.

Требуется ли такое отношение, чтобы я сделал еще один шаг в настройке сопоставления объектов в RestKit?

Нет, вы, кажется, делаете это правильно.

Или это может быть связано с тем, что объект ReinspectionTask вложен в структуру JSON глубже?

Нет, это не проблема. Как я уже упоминал в комментарии выше, я подозреваю, что вы делаете что-то неправильно. Свойство BOOL никогда не должно появляться в консоли как null. Я бы проверял все свойства целевого объекта и проверял, что они являются правильным типом в вашем datamodel и в вашем классе сущности (если он у вас есть). Я также хотел бы проверить значение по умолчанию для этого свойства в вашем datamodel