Проблема при сохранении CGRect в plist - PullRequest
3 голосов
/ 04 мая 2011

Я пытаюсь сохранить массив, который содержит CGRect значений.Я знаю, что списки несовместимы с типом CGRect, поэтому я немного изменил свой код, и теперь я сохраняю NSNumber вместо того, чтобы сохранять значение rect - я разбил значение rect на четыре значения: x, y, width,height.

[myArray1 addObject:[NSNumber numberWithFloat:CGRectGetMinX(rawRect)]];
[myArray1 addObject:[NSNumber numberWithFloat:CGRectGetMinY(rawRect)]];
[myArray1 addObject:[NSNumber numberWithFloat:CGRectGetWidth(rawRect)]];
[myArray1 addObject:[NSNumber numberWithFloat:CGRectGetHeight(rawRect)]];

Теперь myArray1 содержит только NSNumber s, и я пытаюсь сохранить эти значения в plist, но я не могу загрузить их обратно.Может ли кто-нибудь исправить меня, если я делаю что-то не так с моим кодом?

Заранее спасибо;Я жду вашей ценной информации.

Ответы [ 2 ]

17 голосов
/ 04 мая 2011
CGRect rect  = CGRectMake(0, 0, 320.0f, 480.0f);
//you need to translate the rect into a compatible "Plist" object such as NSString
//luckily, there is a method for that

[rectArray addObject:NSStringFromRect(rect)];

//save into a plist


...

при получении этого значения

CGRect rect = CGRectFromString([rectArray objectAtIndex:0]);
0 голосов
/ 04 мая 2011

Код, который вы представили, выглядит правильно. Ваша проблема, вероятно, в другом месте. Это может быть в коде загрузки или где-то еще в коде сохранения, но вы больше ничего не опубликовали, поэтому я не могу быть уверен, в чем проблема.

Вы можете попробовать подход johnoodles, если хотите, для простоты, но это, вероятно, приведет к созданию файла plist большего размера, а также к его сохранению и извлечению. Если вы храните относительно небольшое количество ритов, это, вероятно, не проблема, но если вы храните много, вы можете заметить задержку, которая будет намного короче, если вы сохраните ее как действительные числа.

...