Руководящие наборы кортежей в Objective C

Вы захотите смотреть на тег noscript.

<script type="text/javascript">
...some javascript script to insert data...
</script>
<noscript>
   <p>Access the <a href="http://someplace.com/data">data.</a></p>
</noscript>
6
задан mjmdavis 21 July 2009 в 10:08
поделиться

3 ответа

При создании объектов определенно есть некоторые накладные расходы. Для небольшого количества объектов использование структур данных ObjC по-прежнему уместно. Если у вас большое количество кортежей, я бы управлял ими в массиве структур C. Помните, что Objective-C на самом деле просто C. Использование конструкций C в Objective-C является уместным и обычным (до определенной степени; изучение того, где находится эта точка, представляет собой важную веху на пути к тому, чтобы стать хорошим разработчиком Objective-C).

Обычно для такой структуры данных я бы, вероятно, создал один объект Objective-C, который управлял всей коллекцией. Таким образом, внешние вызывающие абоненты увидят интерфейс Objective-C, но внутренние данные будут храниться в более эффективной структуре C.

Если обычным явлением является быстрый доступ к большому количеству кортежей, мой объект коллекции, вероятно, предоставит "get" методы, подобные [NSArray getObjects: range:] . Методы ObjC, которые начинаются с "get", указывают, что первый параметр является указателем, который будет перезаписан методом. Это обычно используется для высокопроизводительного C-подобного доступа к вещам, управляемым объектом ObjC.

Этот вид структуры данных - это именно то, как разработчики ObjC объединяют элегантность и удобство обслуживания ObjC с производительностью и простотой C.

12
ответ дан 8 December 2019 в 17:25
поделиться

Я думаю, вам придется довольствоваться NSArray объектов NSArray или, возможно, NSArray объектов NSDictionary. Вы всегда можете свернуть свой собственный класс или сделать это так же, как в C.

1
ответ дан 8 December 2019 в 17:25
поделиться

Есть несколько способов сделать это:

  1. CoreData. Хотя технически это не база данных, она может вести себя как таковая. Если вам не требуется постоянство между запусками приложения, рассмотрите возможность использования типа хранилища NSInMemoryStoreType, а не NSSQLiteStoreType или другого варианта. Однако, если вы хотите объединить кортежи вместе, использование CoreData абсолютно не будет работать (это, IMO, основная причина, почему CoreData является , а не базой данных).
  2. Используйте настоящую базу данных. SQLite поставляется на всех Mac и iPhone, и его довольно легко использовать, если вы используете такие оболочки, как FMDB или Постоянные объекты SQLite или PLDatabase или EGODatabase ] или оболочку GTMSQLite от Google .
  3. Кортеж - это на самом деле просто набор пар ключ-значение, поэтому вы можете просто использовать NSMutableArray из NSMutableDictionaries. Вы, очевидно, не сможете использовать синтаксис SQL и любые соединения / запросы, которые вам придется запускать самостоятельно, но это определенно будет самой простой настройкой.
  4. Напишите класс кортежа и сохраните его в NSMutableArray (аналогично # 3, просто применяя общий набор атрибутов в ваших кортежах).
1
ответ дан 8 December 2019 в 17:25
поделиться