我可以想到几种方法,例如将每个颜色组件保存为浮点数,将数组保存为可转换的.保存图案图像的颜色可能会稍微复杂一点,但我想你可以将图像的名称保存为字符串并将其插入到创建代码中.
我是在正确的轨道上,否则一般来说最好和最有效率的是什么?
我对coredata有一些初期的问题,但如果有人能向我解释一些简单的案例,我觉得这会让我感到非常清楚.
我想把我的模型放到coredata中,并且在最简单的情况下利用undo/redo.事实是,我看到的所有例子都倾向于存储字符串或整数.如果我想要在核心数据中实现如下的类(一个组成的示例),该怎么办?
@interface Badge : NSObject {
NSString *textForBadge;
int badgeValue;
UIColor *color;
CGRect rect;
NSMutableArray *awards; // this would be a list of 'Category' - another custom class
}
Run Code Online (Sandbox Code Playgroud)
这些都是当场制作的,但每一个都突出了一个混乱
在我看来,我会打开.xcdatamodel并添加一个新的Entity caled'Badge',这将是一个NSManagedObject.然后我添加一个textForBadge类型的属性String.到现在为止还挺好.我做badgeValue类似的财产以后,但随后来到UIColor和CGRect和我有点为难,因为没有这些属性.我是否应该创建一个实体来表示每个(即Rect具有四个属性的实体x,y,w,h)的实体?然后每次用这些整数填充CGRect?同样适用于UIColor?
最后,我来到我的清单awards.如果这些是指向表示奖励的多个对象的指针列表,则它们可能包含图像,颜色,文本等.我认为这award将再次成为我必须设计的实体而不是Badge存储数组我将拥有1从它到Award班级的许多关系.
我能做到这一点,还是在相反的方向竞争?我看到的所有示例都在像String或int这样的vanilla对象上运行,所以在实现一堆东西之前,我要确保在脑子里有这个权利.
亲切的问候,
布林
我有一个具有UIColor属性的对象:
class Beer: NSObject {
var color: UIColor?
...
}
Run Code Online (Sandbox Code Playgroud)
我将此保存到数据库中,因此我需要将此属性设置为有效的JSON类型,因此我正在考虑将其转换为字符串.如何转换为要存储的字符串,然后在使用该字符串加载时创建UIColor?
我尝试在核心数据中使用 Transformable 类型,但颜色无法转换为 NSObject。如果我想保存颜色信息该怎么办?
以下问题的答案已部分贬值:Storing UIColor object in Core Data和Best way to save and检索 UIColors to Core Data。
1) 'unarchiveObject(with:)' 在 iOS 12.0 中已弃用:使用 +unarchivedObjectOfClass:fromData:error: 代替
2) 'archivedData(withRootObject:)' 在 iOS 12.0 中已弃用:使用 +archivedDataWithRootObject:requiringSecureCoding:error: 代替
extension UIColor
{
class func color(withData data:Data) -> UIColor
{ return NSKeyedUnarchiver.unarchiveObject(with: data) as! UIColor }
func encode() -> Data
{ return NSKeyedArchiver.archivedData(withRootObject: self) }
}
Run Code Online (Sandbox Code Playgroud)
尝试遵循编译器说明和文档,我无法消除错误。有人可以澄清 Swift 5 中上述扩展方法的正确等效项吗?