我正在尝试保存包含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
仅包含NSNumber
,我正在尝试将这些值存储到plist中,但我无法将值加载回来。如果我的代码出错了,任何人都可以纠正我吗?
提前致谢;我在等你的宝贵信息。
答案 0 :(得分:17)
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]);
答案 1 :(得分:0)
您提供的代码看起来是正确的。您的问题可能在其他地方。它可能在加载代码中,或者在保存代码中的其他位置,但您还没有发布任何其他内容,因此我无法确定问题所在。
如果您愿意为了简单起见,可以尝试使用johnoodles方法,但这可能会创建更大的plist文件,并且还需要更长的时间来存储和检索。如果你存储相对较少数量的rects,它可能不是问题,但如果你要存储很多,你可能会注意到如果存储为实际数字会延迟更短。