Справочная информация: я использую инструмент моделирования данных, включенный в Xcode 4.2, для настройки моих основных объектов данных.Я написал некоторый код, который преобразует NSManagedObject в словарь, чтобы упростить загрузку данных в веб-сервис как JSON.Я хотел бы отметить некоторые атрибуты сущностей как те, которые не должны быть сериализованы в JSON.Я надеялся добиться этого, добавив ключ и значение в «Данные пользователя» каждого атрибута, который я не хотел сериализовать.Выполнение этого с использованием инструмента моделирования данных Xcode 4 должно позволить следующему фрагменту кода работать (это часть категории в NSManagedObject, так что это и есть «self»):
NSDictionary *attributesByName = [[self entity] attributesByName];
NSMutableDictionary *valuesDictionary = [NSMutableDictionary dictionaryWithCapacity:[attributesByName count]];
[valuesDictionary setObject:[[self entity] name] forKey:@"ManagedObjectName"];
for (NSString *attributeName in [attributesByName allKeys])
{
NSAttributeDescription *description = [attributesByName objectForKey:attributeName];
id dontSerializeValue = [[description userInfo] valueForKey:@"dontSerialize"];
if (!dontSerializeValue)
{
id attributeValue = [self valueForKey:attributeName];
[valuesDictionary setObject:((attributeValue) ? attributeValue : [NSNull null]) forKey:attributeName];
}
}
Итак, моя проблемазаключается в следующем: результат [description userInfo] (как используется в приведенном выше контексте) всегда равен nil, поэтому, очевидно, нет пар ключ / значение.У меня есть несколько версий моей модели, но я убедился, что я редактирую «текущую» версию (и сохраняю после добавления ключа и значения в Атрибут Entity).Еще одна забавная вещь: если я выйду из Xcode (очевидно, сначала сохраняю), а затем снова открою его, то все, что я добавил в пользовательскую информацию любого атрибута, исчезнет.У кого-нибудь есть идеи относительно того, что происходит?