如何将CGPath持久保存到CoreData

时间:2019-01-01 03:35:40

标签: ios swift core-graphics

我正在iOS上制作绘图应用程序,并希望将用户绘图保存到核心数据中。

我知道NSData是CoreData的属性类型,因此我考虑使用它。

我的想法是将CGPath数组转换为NSData,然后将NSData保存到Core Data。有谁了解我将如何做或有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

如果将CGPath转换为UIBezierPath,则支持NSCoding / NSSecureCoding

do {
    let path = UIBezierPath(cgPath: cgPath)
    let data = try NSKeyedArchiver.archivedData(withRootObject: path, requiringSecureCoding: false)
} catch {
    print(error)
}

您还可以将Data转换回UIBezierPath

do {
    if let path = try NSKeyedUnarchiver.unarchivedObject(ofClass: UIBezierPath.self, from: data) {
        let cgPath = path.cgPath
    }
} catch {
    print(error)
}