菜鸟教程小白 发表于 2022-12-13 10:09:34

ios - 使用 Evernote Cloud SDK 2.0 从 ENNoteContent 中获取 NSString


                                            <p><p>我是 Evernote SDK 开发的新手,我正在使用 Evernote 推荐的 Evernote 云 SDK 2.0。</p>

<p>但是,我无法从 ENNoteContent 对象中获取 NSString 内容。我已经尝试了以下在线搜索,但似乎没有一个适用于 cloud sdk,因为我猜它们都是用于旧版本的 Evernote SDK...</p>

<p><strong>1 使用“convertENMLToHTML”方法。</strong></p>

<p>根据<a href="https://discussion.evernote.com/topic/36673-en-note-content-is-not-displaying-properly-enml-to-html/" rel="noreferrer noopener nofollow">this</a>和 <a href="https://github.com/evernote/evernote-sdk-ios/blob/fa6f0bbf9bc2862c44cfaf1cfcc6588ae5aec585/SampleApp/NoteBrowserViewController.m" rel="noreferrer noopener nofollow">this</a> ,我可以直接在 ENNoteContent 对象上调用 convertENMLToHTML,就像 <code>convertENMLToHTML:note.content</code> 一样。但是,在云 SDK 中,这会导致 ENMLUtility 中的异常终止应用程序,因为 convertENMLToHTML 需要一个 NSString 而不是 ENNoteContent 并且此函数所做的第一件事是尝试调用 <code>]</code> 如果 enmlContent 是指向 ENNoteContent 的指针而不是指向 NSString 的指针,则会导致异常。</p>

<p><strong>2 尝试从 ENNoteContent 对象中获取 _eml 对象</strong></p>

<p>这个 <a href="https://discussion.evernote.com/topic/81500-getting-nsstring-of-ennotecontent/" rel="noreferrer noopener nofollow">post</a>有一个调用 <code></code> 的引用,但这又不适用于 cloud sdk,因为对象 <code>enml</code> 未在接口(interface)中定义。</p>

<p>有谁知道如何从 ENNoteContent 中获取 NSString?我希望这是一个非常简单的过程,但很惊讶我找不到任何适用于 Cloud SDK 的东西。 </p>

<p><strong>3 使用 generateWebArchiveData 方法</strong></p>

<p>根据下面 Sash 的回答,我还尝试在云 sdk 的示例中使用 generateWebArchiveData 方法。我的代码如下所示:</p>

<pre><code>[ downloadNote:result.noteRef progress:^(CGFloat progress) {
} completion:^(ENNote *note, NSError *downloadNoteError) {
    if (note) {
      NSLog(@&#34;%@&#34;, note.title);

      [note generateWebArchiveData:^(NSData *data) {
            NSString* strContent = [ initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@&#34;test content %@&#34;, strContent);
      }];

    } else {
      NSLog(@&#34;Error downloading note contents %@&#34;, downloadNoteError);
    }
}];
</code></pre>

<p>但是,strContent 输出“null”作为我已验证为合法内容的注释。</p>

<p>作为临时 hack,我们添加了 <code>@property (nonatomic, copy) NSString * emml;</code>
在 ENNoteContent.h 中并删除 ENNoteContent.m 中的同一行以暂时解决此问题。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你很接近。上面的技术 #1 是您想要的,但正如您发现 enml 属性在“默认”SDK 中是私有(private)的。导入“高级”标题,您将可以访问 note.content.enml。那是一个字符串,如果您更喜欢 HTML 表示,您可以将其发送到 convertENMLtoHTML。 </p>

<p>请注意,现有笔记没有“纯文本”字符串内容。您将始终将其视为标记,如果您想摆脱标记,这样做超出了 SDK 的范围——如何做到这一点在很大程度上取决于您正在处理的内容的外观。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 Evernote Cloud SDK 2.0 从 ENNoteContent 中获取 NSString,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/32291357/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/32291357/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 Evernote Cloud SDK 2.0 从 ENNoteContent 中获取 NSString