Объединение в цепочку средств доступа к NSManagedObject: это плохая практика?

#objective-c #core-data

#objective-c #core-data

Вопрос:

Извините, это будет немного расплывчато, но здесь идет:

Я помню, как однажды читал, что вам не следует выполнять следующие действия для обхода отношений NSManagedObject, поскольку каскадирование может привести к тому, что часть вашей цепочки будет равна нулю:

self.roomItemInstance.rooinstance.report

Я обнаружил, что части цепочки действительно могут быть установлены в НОЛЬ после каскада в результате действия удаления и т. Д., И это вызывает небольшие проблемы в моем коде.

Я хочу знать, правильно ли я считаю, что это плохая практика, и если да, то что вы рекомендуете вместо этой последовательной цепочки?

Заранее спасибо

Ответ №1:

Насколько я могу судить, это вполне приемлемый способ обхода свойств NSManagedObjects. Я полагаю, что Apple на самом деле рекомендует использовать эти средства доступа (либо пунктирные, как вы показали, либо заключенные в квадратные скобки [[свойство объекта] свойство]) в отличие от типичной альтернативы «GetValue forKey» при доступе к атрибутам / свойствам.

Ответ №2:

Я считаю, что это нормально, потому что Objective C nil объект способен реагировать на селекторы. Если какое-либо из отношений в цепочке возвращает nil, вы будете отправлять селекторы getter в nil для оставшихся отношений, которые автоматически вернут nil. Apple на самом деле поощряет вас делать это описанным выше способом, потому что они хотят сказать: «Видишь, разве Objective C не классный? Вы не могли бы сделать это на других языках «.