<blockquote>
<p>However when I attempt to set an HTML signature using setWebArchive: (which should take an NSData object)… I get the following error:</p>
</blockquote>
<pre><code>11/7/12 11:07:38.858 AM Mail[8820]: -[NSConcreteData data]: unrecognized selector
</code></pre>
<p>此错误告诉您,<code>-[setWebArchive:]</code>正在试图对您的<code>NSData</code>对象调用<code>-[data]</code>。由于<code>-[NSData data]</code>不存在,因此出现无法识别的选择器异常。在</p>
<p>显然,它不需要<code>NSData</code>,它需要通过返回<code>NSData</code>来响应<code>-[data]</code>的内容。在</p>
<blockquote>
<p>EDIT - tried this (returns WebArchive object which should respond to -[data]):</p>
</blockquote>
^{pr2}$
<p>等等……您还没有显示这个类的类转储,但是另一个类有一个方法<code>-[webArchive]</code>,而不是一个正确的<code>webArchive</code>。所以,如果它们完全一致的话,这个也可能有一个方法,而不是一个属性。在</p>
<p>如果是这样,这意味着<code>wds.webArchive</code>不是一个<code>WebArchive</code>对象,而是一个包装器对象,它大致表示ObjC等价于Python绑定的方法。而调用<code>-[data]</code>几乎肯定会失败。在</p>
<pre><code>11/7/12 3:26:59.173 PM Mail[16814]: Class OC_PythonObject: no such selector: data
</code></pre>
<p>如果您只需将其更改为<code>wds.webArchive()</code>,那么应该可以解决问题。在</p>
<p>最后,值得在这里调试打印。如果您认为您有一个<code>WebArchive</code>,并且<code>-[WebArchive data]</code>返回一个<code>NSData</code>,那么您可以非常轻松地进行测试:</p>
<pre><code>print webArchive
print webArchive.data()
</code></pre>