Как сохранить CGPath для CoreData - PullRequest
0 голосов
/ 01 января 2019

Я создаю приложение для рисования на iOS и хотел бы сохранить пользовательский рисунок в базовых данных.

Я знаю, что NSData - это тип атрибута для CoreData, поэтому я подумал об использовании этого, возможно.

Моя идея - каким-то образом преобразовать мой массив CGPath в NSData, а затем сохранить NSData в Core Data.Кто-нибудь знает, как я могу это сделать или лучшее решение там?

1 Ответ

0 голосов
/ 01 января 2019

Если вы конвертируете 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)
}
...