Как я могу сохранить объекты JSON в Core Data?

Я новичок в Core Data, я разработал приложение на основе навигации, и некоторые из данных, которые я использую, создаются во время выполнения (приходят с URL через JSON). Я изучил несколько учебных пособий, которые искали почти сутки, но до сих пор не понял, как сохранить входящие данные JSON в сущность (или событие?) В моей модели базовых данных. Я получаю данные вDetailViewController класс, и мне нужно сохранить эти данные в Core Data (я подготовил сущность с 7 свойствами). Кто-нибудь может помочь? (Если вы знаете хороший учебник или пример кода, я буду рад)

РЕДАКТИРОВАТЬ Это может быть немного конкретным, но у меня действительно есть проблемы и мне нужна небольшая помощь. Мои данные поступают в приложение с некоего спокойного сервера (я написал его на PHP), сначала пользователь вводит свою регистрационную информацию (которую я ранее сохранял в базе данных на сервере), а когда приходят данные ответа, я буду использовать разные элементы этого в разных точках зрения (например,user_id будет использоваться на виде иbuttonData и тд на другие взгляды). Мой вопрос, как я буду сохранять данные JSON в моей основной модели данных (на данный момент имеет дерево сущностей). заранее спасибо

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

Ответы на вопрос(4)

https://github.com/TouchCode/TouchJSON И затем, если вы хотите создать фабрику для анализа json и подачи данных кода, вы можете использовать селекторы для вызова методов, чтобы заполнить все ваши атрибуты.

 il-os22 февр. 2012 г., 13:03
Может быть но как? Сейчас я читаю книгу «Основные данные», но это займет много времени, если вы знаете, как это сделать, не могли бы вы поделиться со мной?
 Matthieu Lucas22 февр. 2012 г., 12:26
Если вы загружаете данные из другого класса, хорошим решением может быть синглтон для подачи основных данных?
 Matthieu Lucas22 февр. 2012 г., 12:25
NSJSONSerialization предназначен только для IOS5 и более, это может быть менее интересно.
 il-os22 февр. 2012 г., 13:11
@ Matthieu Lucas: если у вас есть Apple ID, я отправлю вам свой пост на devforum.apple.com, я объяснил весь сценарий и поделился некоторыми представлениями JSON.
 il-os22 февр. 2012 г., 12:00
Спасибо @ Matthi, euLucas, но у меня нет проблем с анализом, NSJSONSerialization - хороший класс для анализа JSON, и мое приложение предназначено для iPad, так что этого мне достаточно. Что мне нужно, это отправить эти проанализированные объекты в основные данные. Я загружаю свои данные из нескольких разных классов и должен использовать их во время выполнения (я буду называть объекты из разных предложений)

ваши данные JSON преобразуются в NSDictionary или NSArray (или некоторую комбинацию двух). Просто извлеките ключ / значения из структуры JSON и добавьте их в свой класс сущностей.

 il-os21 февр. 2012 г., 11:48
Как я могу их добавить, может кто-нибудь помочь?
 il-os20 февр. 2012 г., 23:38
У меня нет проблем, потому что KVC (key-value-coding), но я не знаю, по какому коду добавить объекты (словарь массивов) в мои базовые данные. Я имею в виду, мне нужно руководство по коду.

Этот lib мне очень помогает

Сопоставление атрибутов и отношений с путями ключей JSON.

Преобразование значений с использованием именованных объектов NSValueTransformer.

Сохранение графов объектов.

Поддержка наследования сущностей

Работает наоборот

Решение Вопроса

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

Создав сущности, вы можете начать с разбора и перевода. Используйте некоторую инфраструктуру JSON (начиная с iOS5, там есть Apple) и проанализируйте строку JSON в дереве объектов, где корневым элементом является NSArray или NSDictionary, а подэлементами будут NSArray, NSDictionary, NSNumber, NSString или NSNull.

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

пример

Мой код разбора в аналогичной ситуации был следующим:

NSDictionary *parsedFeed = /* your way to get a dictionary */;
for (NSString *key in parsedFeed) {
    id value = [parsedFeed objectForKey:key];
    // Don't assign NSNull, it will break assignments to NSString, etc.
    if (value && [value isKindOfClass:[NSNull class]])
         value = nil;

    @try {
        [yourCreatedEntity setValue:value forKey:property];
    } @catch (NSException *exception) {
        // Exception means such attribute is not defined in the class or some other error.
    }
}

Этот код будет работать в тривиальной ситуации, однако его может потребоваться расширить в зависимости от ваших потребностей:

С некоторыми видами пользовательских отображений на случай, если вы хотите, чтобы ваше значение JSON было помещено в атрибут с другим именем.Если ваш JSON имеет подобъекты или массивы подобъектов, вам нужно будет обнаружить эти случаи, например, в установщиках, и инициировать новый анализ на один уровень глубже. В противном случае с моим примером вы столкнетесь с ситуацией, когда объект NSDictionary назначается объекту NSManagedObject.

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

 il-os20 февр. 2012 г., 23:44
У меня есть семь атрибутов в модели данных (есть несколько основных элементов, которые я буду использовать в контексте приложения), и я анализирую json с классом NSJSONSerialization от Apple. Не могли бы вы объяснить, как я могу отправить эти проанализированные элементы (массив и словарь) в основные данные? Мне нужен просто код
 coverback21 февр. 2012 г., 09:31
Я отредактировал ответ, чтобы добавить код. Надеюсь, это поможет.
 il-os21 февр. 2012 г., 09:38
Спасибо большое:)

Ваш ответ на вопрос