Objective c CGPathRef编码

Objective c CGPathRef编码,objective-c,cocoa,nscoding,Objective C,Cocoa,Nscoding,是否可以对CGPathRef变量进行编码?我的意思是有一个encodeObject:CGPathRef变量的类似forKey的方法吗?CGPaths是对象,但我认为至少不能对它们进行编码,如果可以的话,它没有文档记录。您需要自己生成路径的可保存表示形式,并对其进行编码,然后,当您解码该表示形式时,您自己从中重新生成路径。是的,有-我已经这样做了:Github上的这个有两个实用程序字符串用于将CGPATH与NSStrings交换: +(nullable NSString*) svgPathFrom

是否可以对CGPathRef变量进行编码?我的意思是有一个encodeObject:CGPathRef变量的类似forKey的方法吗?

CGPaths是对象,但我认为至少不能对它们进行编码,如果可以的话,它没有文档记录。您需要自己生成路径的可保存表示形式,并对其进行编码,然后,当您解码该表示形式时,您自己从中重新生成路径。

是的,有-我已经这样做了:

Github上的这个有两个实用程序字符串用于将CGPATH与NSStrings交换:

+(nullable NSString*) svgPathFromCGPath:(CGPathRef)aPath;
+(nullable CGPathRef) newCGPathFromSVGPath:(NSString*)anSVGPath whileApplyingTransform:(CGAffineTransform)aTransform;
您可以将这些字符串与nscoder一起使用来存储内容。请注意,任何时候在路径和字符串之间转换时,都可能因为转换而丢失有效数字


我写了这些程序,它们是在麻省理工学院的许可下

CGPathRef
NSBezierPath
之间是否存在任何关系
NSBezierPath
应该是可序列化的,如果有办法将一个转换为另一个,您可以根据需要对
NSBezierPath进行编码并转换为CGPath
NSBezierPath
让我觉得比CGPath不透明一点。不,没有。您必须使用applier函数手动转换。这通常没有那么难,但是如果CGPath包含一条二次曲线(一个有一个控制点),您必须将其转换为一条三次曲线(两个控制点)。在iOS上,您可以使用
UIBezierPath
,这是
NSCoding
兼容的,并且实现了类方法
bezierPathWithCGPath:
。看到了,非常感谢。救生员!哦,不,唯一一个将要拯救我生命的链接现在断了。在这里:它似乎还不能处理所有的路径?有评论说,它不支持“椭圆弧”。此外,该许可证相当政治性。