Где разместить сопоставления объектов (в RestKIt) - PullRequest
6 голосов
/ 13 сентября 2011

Поскольку я не хочу перехватывать другую ветку, здесь возникает мой вопрос о отображениях.

Первое чтение: Где лучше всего разместить сопоставления объектов в RestKit

Я уверен, что ответ, который дал Блейк Уотерс, вероятно, будет очень правильным, так как он гораздо умнее и опытнее меня, но мне логика подсказывает, что мне нужно сопоставить каждую модель: если вы что-то измените в вашей модели вы просто прокручиваете, чтобы изменить ваши отображения.

В моем AppDelegate я бы тогда просто вызывал initMappings (или как вы хотите это называть) в каждой из моих моделей.

Ответы [ 3 ]

1 голос
/ 29 марта 2012

Я также фанат размещения сопоставлений с моими моделями. Я делаю это, добавляя метод класса к каждой модели, чтобы я мог получить отображение в любое время и в любом месте.

+ (RKObjectMapping *)objectMapping 
{
    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[self class]];

    [mapping mapKeyPath:@"Id"       toAttribute:@"id"];
    [mapping mapKeyPath:@"Subject"      toAttribute:@"subject"];
    [mapping mapKeyPath:@"Message"      toAttribute:@"message"];
    [mapping mapKeyPath:@"PostDate"     toAttribute:@"postDateStr"];
    [mapping mapKeyPath:@"StatusId"     toAttribute:@"statusId"];
    [mapping mapKeyPath:@"StatusDate"   toAttribute:@"statusDateStr"];

    mapping.setNilForMissingRelationships = YES;

    return mapping;
}
0 голосов
/ 31 мая 2012

Я считаю, что это очень естественно думать так, как вы, это имеет смысл, поскольку вы имеете больший контроль над кодом и его очистителем, но вы должны быть очень осторожны, как уже говорили многие, проблема с циклическими ссылками может быть большой проблемой

Решение по этому вопросу состоит в том, что когда у вас есть сущность A, ссылающаяся на B, а B на A, то в одной из обеих сущностей вы должны будете выбрать не отображать сущность напрямую, или вы попадете в цикл.

Когда у вас все в одной области, определение циклических ссылок становится невозможным, потому что вам нужно первоначальное определение B, чтобы добавить его ссылку на A, поэтому решение, которое я только что упомянул, является естественным способом сделать это на этом подходе.

От вас и вашего приложения зависит, какой подход вы хотите использовать, который лучше для вас и вашей команды. Вы должны выбрать между возможными ошибками и чистым кодом.

0 голосов
/ 15 декабря 2011

Я выбрал маршрут создания категории и поместил ее туда. Однако я создал его в своем классе делегатов приложения, а не в поставщике сопоставлений.

Я думаю, что проблема с его наличием в моделях такая же, как описано в другом потоке, если у вас есть отношения, вы можете получить круговые ссылки.

...