Вы действительно хотите получить все свойства?Часто не имеет смысла получать все свойства объекта в виде словаря.Например, если NSManagedObject
содержит отношение, хотите ли вы также получить его в словаре?Если да, то как вы хотите это представить?
Как сказал jlehr, лучше явно задавать набор ключей, используя dictionaryWithValuesForKeys:
.
Тем не менее, используя страшную среду выполнения Objective-C, вы действительно можете реализовать makeDictionaryWithObjectProperties
.Используйте class_getPropertyList и property_getName .Я не буду подробно описывать, как это сделать, потому что если вы будете следовать этому подходу, вы будете знать, что делаете.
Кстати, вам очень опасно назначать объект JSON
, возвращаемый изИнтернет на NSManagedObject
с использованием setValuesForKeysWithDictionary:
.Потому что, если объект JSON
содержит дополнительный ключ, который вы не ожидаете, ваш код может внезапно завершиться сбоем.Итак, не делайте этого .
Еще один комментарий: ваш псевдокод
NSObject *myObject = [[NSObject alloc] init];
[myObject setValuesForKeysWithDictionary:JSONDict];
не имеет особого смысла: да, вы можете позвонить setValuesForKeysWithDictionary:
против NSObject
, но он с треском провалится, потому что вы не можете setValue:forKey:
ни для одной из записей в JSONDict
ванили NSObject
.Полагаю, вы это знаете, но я бы хотел сказать это явно, чтобы новичка, который наткнулся на эту страницу, не обманули.