Кодирование ключевого значения

Когда я запускал простое приложение для iPhone, у меня был прямой подход к превращению пар «ключ-значение» из XML-отрывка в NSDictionary. Проблема в том, что мне нужно превратить те экземпляры NSDictionary, которые когда-то заполняли мой UITableView, в пользовательские классы, потому что они требуют поведения и дополнительной сложности. Проблема здесь в том, что теперь мне намного сложнее создать экземпляр объекта и заполнить его переменные экземпляра парами ключ / значение из веб-службы. Я больше не могу использовать его в методе, который выполняет итерацию по XML и использует KVC для установки своих переменных экземпляра.

Какие еще есть решения?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
7 431
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Как только ваш объект станет совместимым с NSCoding, вы можете просто заархивировать весь массив объектов с помощью NSKeyedArchiver.

Обратите внимание: если у вас много объектов, это может существенно повлиять на производительность приложения на iPhone во время загрузки и сохранения.

NSCoding выглядит отличным решением, август. Однако меня беспокоит снижение производительности за его использование. Мои объекты обычно содержат 5/6 переменных экземпляра, фундаментальные типы данных. Интересно, сколько потребуется, чтобы заправить мое приложение.

Coocoo4Cocoa 18.12.2008 23:47

Однако он работает с веб-службой XML, не спрашивая, как сохранить свои объекты в источнике данных.

Marc Charbonneau 18.12.2008 23:48

Влияет положительно или отрицательно?

Harald Scheirich 18.12.2008 23:48

Шарбонно прав. Я получаю XML-канал, который соответствует объекту на клиенте iPhone / Mac. Обычно это будет что-то вроде <user><name>Bob</name><age>43</age> </user> У меня раньше был метод, который использовал бы экземпляры NSDictionary кода ключа / значения.

Coocoo4Cocoa 18.12.2008 23:53
Ответ принят как подходящий

Вы по-прежнему можете использовать методы кодирования значений ключа в своем пользовательском классе, если вы правильно называете свои переменные, в этом нет никакой разницы. С учетом вышесказанного, когда я работаю с XML, я обычно заканчиваю тестированием имени каждого узла или созданием ключевой таблицы поиска, поскольку имена в источнике данных, с которым я работаю, не соответствуют кодированию значений ключа. Если у вас есть контроль над источником данных, вы можете просто продолжать использовать setValue:forKey:.

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

Звучит хорошо, Марк. Есть ли шанс, что вы можете объяснить, что вы имеете в виду, говоря, что имена в источнике данных не совместимы с кодированием ключа / значения? А на что вы тестируете свои узлы?

Coocoo4Cocoa 19.12.2008 04:30

Использование заглавных букв играет роль, но имена узлов не всегда совпадают с именем переменной. Например, DetailPageURL может отображаться на pageURL, заголовок - на заголовок и т. д.

Marc Charbonneau 19.12.2008 06:00

Другие вопросы по теме