我创造了一个邮件.app一个带有Python的插件,通过在ComposeBackEnd中滑动setSignature:方法设置从远程服务器提取的自定义签名。根据下面的类转储,我可以使用setSignatureContents:设置纯文本签名,这是功能性的。在
@interface Signature : NSObject <NSCopying>
{
NSString *_uniqueId;
NSString *_name;
NSData *_webArchiveData;
BOOL _isRich;
BOOL _isSavedAsRich;
BOOL _isDirty;
MFSyncedFile *_syncedFile;
}
- (id)syncedFile;
- (id)signaturePath;
- (unsigned long long)hash;
- (BOOL)isEqual:(id)arg1;
- (BOOL)isRich;
- (void)setIsRich:(BOOL)arg1;
- (void)setWebArchive:(id)arg1;
- (id)webArchive;
- (id)webArchiveData;
.....
- (void)setSignatureContents:(id)arg1;
- (id)signatureContents;
- (void)setSignatureName:(id)arg1;
- (id)signatureName;
@end
尝试使用一个webnsi对象来存档:(但是,当使用一个webnsi数据集时,应该尝试使用该签名集):
^{pr2}$我得到以下错误:
11/7/12 11:07:38.858 AM Mail[8820]: -[NSConcreteData data]: unrecognized selector sent to instance 0x7ffc2386bc00
(远程文件的格式已正确)
有什么办法可以让它工作吗?提前谢谢。在
EDIT-尝试了此操作(返回应响应-[data]
)的WebArchive对象:
wds = WebDataSource.alloc().initWithRequest_(NSURLRequest.requestWithURL_(NSURL.URLWithString_('http://...')))
webarchive = wds.webArchive
signature.setWebArchive_(webarchive)
结果:
11/7/12 3:26:59.173 PM Mail[16814]: An uncaught exception was raised
11/7/12 3:26:59.173 PM Mail[16814]: Class OC_PythonObject: no such selector: data
此错误告诉您,
-[setWebArchive:]
正在试图对您的NSData
对象调用-[data]
。由于-[NSData data]
不存在,因此出现无法识别的选择器异常。在显然,它不需要
^{pr2}$NSData
,它需要通过返回NSData
来响应-[data]
的内容。在等等……您还没有显示这个类的类转储,但是另一个类有一个方法
-[webArchive]
,而不是一个正确的webArchive
。所以,如果它们完全一致的话,这个也可能有一个方法,而不是一个属性。在如果是这样,这意味着
wds.webArchive
不是一个WebArchive
对象,而是一个包装器对象,它大致表示ObjC等价于Python绑定的方法。而调用-[data]
几乎肯定会失败。在如果您只需将其更改为
wds.webArchive()
,那么应该可以解决问题。在最后,值得在这里调试打印。如果您认为您有一个
WebArchive
,并且-[WebArchive data]
返回一个NSData
,那么您可以非常轻松地进行测试:如果有人想这样做,下面是创建和设置web存档的解决方案(您需要添加WebKit框架):
-
^{pr2}$上面的代码在转换为PyObjC语法后,可以很好地与最新版本的Mail配合使用。不幸的是,它不可能是本地文件,因为gateekeeper在10.8上对它进行了限制,而且你必须在setSignature之前调用URL请求:(将webFrame设置为全局变量,并将主窗口加载子类化),否则它将无法及时加载,您只会得到一个空的WebArchive。在
相关问题 更多 >
编程相关推荐