Вопрос по objective-c, iphone, ipad – Динамическая генерация данных членов

2

Я сделал одно приложение, которое может анализировать данный xml-файл независимо от его тегов. Он работает хорошо и хорошо подходит для одного уровня списка XML-файлов. Я хочу назначить XML-значения для объекта. Поскольку XML-данные могут отличаться, класс также должен быть универсальным, а также членами данных. Я могу достичь общих членов данных, используя идентификатор типа данных. Но проблема в том, что xml может иметь разное количество типов данных. так можно ли определить количество членов данных во время выполнения? (здесь я загружаю xml два раза, это полезно для достижения нашей цели?)

Ваш Ответ

3   ответа
0

Кодирование значения ключа идеально соответствует вашим потребностям, вы можете использовать NSMutableDictionary, если вы хотите что-то быстрое & amp; просто.

Можете ли вы рассказать, как KVC может выполнить мое требование. V-Xtreme
Ключевой путь сvalueForKeyPath: а такжеsetValue:forKeyPath: поможет вам сохранить разобранныйxml структура в одном объекте. В вашем случае я бы использовал ассоциативные ссылки для реализации протокола:developer.apple.com/library/ios/#documentation/cocoa/conceptual/… Или словарь словарей словарей ... это выглядит не так элегантно.
0

еще один вопрос ОП, Просто чтобы уточнить ответ A-Live:

Если объект является просто полностью общим держателем значений, то вам просто нужно использоватьNSMutableDictionary, Для этого нет особой необходимости использовать KVC, хотя это работает.

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

Как только оба этих метода определены, клиент класса может использовать KVC для получения и установки значений свойств, используя-valueForKey: а также-setValue:forKey:.

Любой из "неопределенного ключа" Методы, которые вы реализуете, могут быть полностью разрешающими, передавая любые и все ключи в словарь, или они могут проверять ключ по списку разрешенных / известных свойств. Этот список будет по-прежнему создаваться во время выполнения, а не фиксироваться во время компиляции, но, если у вас есть эта информация откуда-то, это создает некоторую дополнительную безопасность. Для неизвестных / запрещенных ключей просто позвоните наsuperреализация.

Оба метода & # x2013; скорее всего, сеттер & # x2013; также может реализовывать поведение, связанное со специальными свойствами, если хотите.

-1

Сенсорный XML , TBXML чтобы решить вашу проблему.

Похожие вопросы