Попробуйте csplit (1) для вырезания объема производства в отдельные таблицы на основе регулярных выражений (соответствие границе таблицы, я думал бы).
Есть четыре варианта:
[идентификатор объекта]
или + [NSValue valueWithNonrehibitedObject:]
кажутся наиболее очевидными CFDictionaryCreateMutable ()
, чтобы создать словарь с сохраненным вместо копирования, а затем вызовите CFDictionarySetValue ()
для хранения объектов [NSMapTable mapTableWithStrongToStrongObjects]
дает вам чисто Objective -C эквивалентно CFMutableDictionary
NSCopying
для подкласса управляемого объекта, чтобы он возвращал self (с увеличенным количеством ссылок, если вы не используете ARC) + valueWithNonreolatedObject:
довольно опасно, так как можно оставить висящий указатель; вероятно, лучше всего этого избегать.
Хранение идентификаторов объектов - это нормально, за исключением того факта, что новые объекты начинают свою жизнь с временного идентификатора . Затем этот идентификатор меняется на постоянный, когда контекст сохраняется на диск (или вызывается -obtainPermanentIDsForObjects:…
). Ваш код сопоставления должен быть достаточно умным, чтобы справиться с этим, если только он не может гарантировать, что все входящие объекты уже имеют постоянный идентификатор.
Реализация NSCopying
кажется немного неприятной, но должна работать нормально. Как оказалось, это именно тот подход NSURLSessionTask
, я полагаю, для удобства использования словарей.
До OS X 10.8 Mountain Lion, раньше было возможно создать обычный NSMutableDictionary
, а затем вызвать для него CFDictionarySetValue ()
. Однако это уже не так; новые словари теперь имеют правильные обратные вызовы копирования, указанные на уровне CF, а не являются чисто функцией NSMutableDictionary
.
Я предлагаю использовать [[myManagedObject objectID] URIRepresentation] absoluteString] в качестве ключа.
Вы можете сделать его самостоятельно за 20 секунд. Например, в C #
- Create a new WinForms application
- Create a new SqlConnection(connectionString)
- Exception => Bad connection string
который содержит ссылку на экземпляр NSManagedObject, который вы хотите использовать в качестве ключа словаря? Затем вы можете заставить этот класс-оболочку реализовывать NSCopying вместе с хеш-методом (возможно, просто вызывая хеш-метод NSManagedObject) и использовать эту оболочку как ключ словаря.