2011-01-01 7 views
18

У меня есть куча CGPoints из CCTMXLayer, который я хочу сохранить в NSUserDefaults, но, похоже, не может найти элегантный способ сделать это.Сохранить список CGPoints с помощью NSUserDefaults

Первоначально я надеялся сохранить NSDictionary с NSMutableSet для значения, содержащего несколько NSValues ​​(valueWithCGPoint). Из того, что я могу сказать, NSMutableSet или NSValue поддерживается NSUserDefaults.

На данный момент я рассматриваю возможность сохранения значений x CGPoint в качестве строки и просто преобразования ее туда и обратно по мере необходимости.

+0

Вы считали, что используете NSKeyedArchiver в файле? (Вместо использования NSUserDefaults.) –

ответ

46

Существует пара функций NSStringFromCGPoint и CGPointFromString. Вы можете использовать их для создания массива строк, представляющих точки для сериализации, а затем конвертировать назад, когда вы закончите.

+0

Замечательно! Я понятия не имел, что эти функции существуют. Всегда выясняя новые грани объектива-с. –

1

Вставьте их в NSValue объектов. Как только они там, вы можете написать NSValues на диск (так как они соответствуют <NSCoding>) или поместить их в NSUserDefaults или что угодно.

+0

Это как раз моя проблема. Я пытаюсь сохранить NSArray (или NSSet ... я пробовал оба) NSValues, используя NSUserDefaults, но продолжать получать ошибку: [NSUserDefaults setObject: forKey:]: попытка вставить значение не-свойства –

+0

Списки свойств не используются . Объекты NSValue не могут быть записаны в plists. –

+0

Ой, ну, извините. Да, вам придется использовать 'NSKeyedArchiver' для преобразования' NSValues' в 'NSDatas' (или' NSArray' в 'NSData') –

Смежные вопросы