1

我尝试了可转换类型并像这样保存我的路径:

myEntityObj.mypah=(__bridge id)(anyPath);

t 但是当我打电话时CGPathRef path=[allEntities objectAtIndex:n] mypath],这条路径不正确(不要回答 CGPath 类方法等)。我能做些什么?

4

1 回答 1

5

CGPath在这里使用起来有点困难,因为

  • 您不能将其直接保存到 Core Data 中,因为它不是 Core Data 识别的类型。
  • 它不提供任何 API 来将其转换为 Core Data 可识别的类型(例如NSData)。

您需要以一种或另一种方式将CGPathRef(或其组件)转换为 Core Data 可识别的类型,例如NSData. 在自定义值转换器中执行此操作最方便(查找NSValueTransformer)。但关键是弄清楚如何转换数据。

你有几种可能性:

  1. 不要保存路径,保存用于创建路径的数据。NSValue例如,提供了一个 API 来将实例转换为/从CGPoint. 并NSValue符合NSCoding。这将允许您将单个点转换为NSData,Core Data 可以保存它。读取数据时,反转过程以重建CGPathRef.

  2. 用作UIBezierPath您的CGPathRef. 您可以使用 a 初始化 a UIBezierPathCGPathRefCGPathRef从 a 中获取 a UIBezierPathUIBezierPath符合NSCoding,因此可以将其转换为NSData以保存在 Core Data 中。

于 2013-08-05T21:45:03.027 回答