gpt4 book ai didi

iphone - core data中如何存储CGRect等东西

转载 作者:太空狗 更新时间:2023-10-30 03:20:54 26 4
gpt4 key购买 nike

我在使用 coredata 时遇到了一些初期问题,但如果有人能向我解释一些简单的案例,我觉得这会为我解决很多问题。

我想将我的模型放入 coredata 中,并在最简单的情况下利用撤消/重做。问题是,我看到的所有示例都倾向于存储字符串或整数。如果我有一个类如下我想在核心数据中实现(一个虚构的例子):

@interface Badge : NSObject {

NSString *textForBadge;
int badgeValue;
UIColor *color;
CGRect rect;
NSMutableArray *awards; // this would be a list of 'Category' - another custom class
}

这些都是现场编的,但每一个都突出了一个困惑

如我所见,我将打开 .xcdatamodel 并添加一个名为“Badge”的新实体,它是一个 NSManagedObject。然后,我为类型为 StringtextForBadge 添加了一个属性。到目前为止,一切都很好。我为 badgeValue 做了一些类似的事情,但后来到了 UIColorCGRect 并且我有点难过,因为没有这些属性。我是否应该创建一个实体来表示每个整数(即具有四个属性 x,y,w,hRect 实体)?然后每次都用这些整数填充 CGRect? UIColor 也一样吗?

最后,我来到了我的奖项列表。如果这些是指向代表奖励的多个对象的指针列表,它们可能包含图像、颜色、文本等。我​​假设 award 将再次成为我必须设计的实体,而不是Badge 存储一个数组我会从它到 Award 类有一对多的关系。

我做对了吗,还是朝着相反的方向前进?我看到的所有示例都对原始对象(如 String 或 int)进行操作,因此我想确保在实现一堆东西之前我的头脑中有这个权利。

亲切的问候,

布林

最佳答案

特别是关于 CGRect,您可以使用 NSStringFromCGRectCGRect 存储为 NSString。然后使用 CGRectFromString 将其转换回来:

CGRect rect = CGRectMake( 5, 5, 40, 30 );
NSString* rectAsString = NSStringFromCGRect( rect );
CGRect original = CGRectFromString( rectAsString );

这使您可以轻松地将其存储在 NSManagedObject 中。然后,您可以在您的实现中添加一个自定义访问器来转换它:

- (CGRect)realRect {
return CGRectFromString( self.rectAsString );
}

关于iphone - core data中如何存储CGRect等东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com