3

我正在尝试保存一个包含CGRect值的数组。我知道 plist 与类型不兼容CGRect,所以我稍微修改了我的代码,现在我存储NSNumber而不是存储 rect 值——我将 rect 值分成四个值:x、y、宽度、高度。

[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只包含NSNumbers 并且我正在尝试将这些值存储到 plist 中,但我无法将这些值加载回来。如果我的代码有任何问题,有人可以纠正我吗?

提前致谢; 我正在等待你的宝贵信息。

4

2 回答 2

18
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]);
于 2011-05-04T16:59:17.267 回答
0

您提供的代码看起来是正确的。您的问题可能在其他地方。它可能在加载代码中,或者在保存代码中的其他地方,但您没有发布任何其他内容,所以我无法确定问题出在哪里。

为简单起见,如果您愿意,可以尝试 johnoodles 方法,但这可能会创建更大的 plist 文件,并且存储和检索也需要更长的时间。如果您存储的矩形数量相对较少,这可能不是问题,但如果您存储很多,您可能会注意到如果存储为实际数字,延迟会更短。

于 2011-05-04T17:25:00.340 回答