NSKeyedArchiver/NSuserDefaults - сохранение CGRect

Мое приложение включает пользовательскую способность перетащить определенные объекты, такие как представления UIImage и регуляторы громкости. Моя цель состоит в том, чтобы смочь сохранить местоположения объектов так, чтобы пользователю не, возможно, придется перетащить объекты снова после перезапуска. К сожалению, я видел ошибки вдоль взятия 'сохранения CGRect rect = item.frame кому: NSuserDefaultsилиNSKeyedArchiver'маршрут. Какие-либо другие предложения?

8
задан mhillsman 5 June 2017 в 06:31
поделиться

4 ответа

Если вы используете архивирование по ключу на iPhone, UIKit специально поддерживает добавление, которое выглядит следующим образом: -encodeCGRect: forKey: и делает именно то, что вы хотите. См. Документацию Apple для дополнений UIKit от NSCoder .

Если вы используете NSUserDefaults, вы не можете позволить себе использовать явный кодировщик для CGRects, но, как говорят некоторые другие ответы, вы можете сохранить их в виде строк, используя NSStringFromCGRect () и его обеспечить регресс.

11
ответ дан 5 December 2019 в 06:37
поделиться

Для их хранения можно использовать NSStringFromgCGRect() и CGRectFromString().

18
ответ дан 5 December 2019 в 06:37
поделиться

Можно использовать paste.reloader с любым wsgi-сервером, кроме других модулей вставки.

# run paste reloader
import paste.reloader as reloader
reloader.install()

# run wsgiref server
from wsgiref import simple_server
simple_server.make_server('', 8080, main_wsgi_app).serve_forever()

Достаточно ли это минималистично?

-121--3153503-

См. http ://lists.apple.com/archives/xcode-users/2009/Jun/msg00153.html

Хитрость состоит в том, чтобы определить EXCLUDED_SOURCE_FILE_NAMES в конфигурации, из которой требуется исключить файлы, и задать значение этого пользовательского параметра построения для списка имен файлов (или шаблона, соответствующего этим именам и только именам файлов).

-121--2443134-

Вероятно, следует закодировать CGRect с помощью NSData , а затем сохранить объект NSData с помощью NSUserDefaults или NSKeyedArchiver .

Я не уверен, на какие именно ошибки вы ссылаетесь в своем вопросе, может быть, нужно больше объяснений?

0
ответ дан 5 December 2019 в 06:37
поделиться

Вам нужно преобразовать плавающие значения в CGRect в NSNumbers, а затем поместить их в словарь.

Если вам нужно хранить много CGRect, я рекомендую создать небольшой облегченный класс с элементами CGRect в качестве архивируемых атрибутов NSNumber. Создайте инициализатор, который принимает CGRect. Затем напишите быстрые методы протокола NSCoder, чтобы весь объект можно было архивировать

Таким образом вы сможете быстро и легко преобразовывать, хранить и затем извлекать CGRect.

-4
ответ дан 5 December 2019 в 06:37
поделиться
Другие вопросы по тегам:

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