変換可能な型を試し、パスを次のように保存しました。
myEntityObj.mypah=(__bridge id)(anyPath);
t しかし、私が呼び出すとCGPathRef path=[allEntities objectAtIndex:n] mypath]、このパスは正しくありません (CGPath クラス メソッドなどには応答しないでください)。私に何ができる?
変換可能な型を試し、パスを次のように保存しました。
myEntityObj.mypah=(__bridge id)(anyPath);
t しかし、私が呼び出すとCGPathRef path=[allEntities objectAtIndex:n] mypath]、このパスは正しくありません (CGPath クラス メソッドなどには応答しないでください)。私に何ができる?
CGPathここで使用するのは少し難しいです。
NSData。CGPathRef何らかの方法で、 (またはそのコンポーネント) を Core Data が認識する型に変換する必要がありますNSData。カスタム値トランスフォーマー (参照) でこれを行うのが最も便利ですNSValueTransformer。しかし、重要なのは、データを変換する方法を理解することです。
いくつかの可能性があります。
パスを保存しないでください。パスの作成に使用したデータを保存してください。NSValueたとえば、インスタンスを との間で変換するための API を提供しますCGPoint。に準拠NSValueしていNSCodingます。これにより、個々のポイントを に変換NSDataでき、Core Data でそれを保存できます。データを読み取るときは、プロセスを逆にして再構築しCGPathRefます。
UIBezierPathあなたの便利なコンテナとして使用してくださいCGPathRef。を で初期化UIBezierPathし、からCGPathRefを取得できます。に準拠しているため、上記のように に変換して Core Data に保存できます。CGPathRefUIBezierPathUIBezierPathNSCodingNSData