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

标签 ios objective-c evernote

我是 Evernote SDK 开发新手,正在使用 Evernote 推荐的 evernote cloud SDK 2.0。

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

1 使用“convertENMLToHTML”方法。

根据 thisthis ,我可以直接在 ENNoteContent 对象上调用 convertENMLToHTML,就像这样 convertENMLToHTML:note.content。然而,在云 SDK 中,这导致 ENMLUtility 内部出现异常,终止应用程序,因为 convertENMLToHTML 需要一个 NSString 而不是 ENNoteContent,并且该函数做的第一件事是尝试调用 [enmlContent dataUsingEncoding:NSUTF8StringEncoding]] 如果 enmlContent 是指向 ENNoteContent 的指针而不是指向 NSString 的指针,则会导致异常。

2 试图从 ENNoteContent 对象中获取 _emml 对象

post引用了调用 [note.content enml] 但这又不适用于 cloud sdk,因为接口(interface)中 undefined object enml

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

3 使用 generateWebArchiveData 方法

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

[[ENSession sharedSession] downloadNote:result.noteRef progress:^(CGFloat progress) {
} completion:^(ENNote *note, NSError *downloadNoteError) {
    if (note) {
        NSLog(@"%@", note.title);

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

    } else {
        NSLog(@"Error downloading note contents %@", downloadNoteError);
    }
}];

但是,strContent 输出“null”表示我已验证内容合法。

作为临时 hack,我们添加了 @property (nonatomic, copy) NSString * emml; 在 ENNoteContent.h 中并删除 ENNoteContent.m 中的同一行以暂时解决此问题。

最佳答案

你很接近。上面的技术 #1 是您想要的,但正如您发现的那样,enml 属性在“默认”SDK 中是私有(private)的。导入“高级”标题,您将可以访问 note.content.enml。这是一个字符串,如果您更喜欢 HTML 表示,可以将它发送到 convertENMLtoHTML。

请注意,现有笔记没有“纯文本”字符串内容。您将始终将其视为标记,如果您想摆脱标记,这样做超出了 SDK 的范围——如何做到这一点在很大程度上取决于您处理的内容是什么样子的。

关于ios - 使用 Evernote Cloud SDK 2.0 从 ENNoteContent 中获取 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32291357/

相关文章:

Objective-C 方法引用

iphone - 从 iOS 中的 Evernote API 注销

android - 像IOS SDK一样在Android SDK中预览和打开PDF文档

ios - 在 UINavigationController 中仅支持一个 View 的横向

ios - 使用 'Time Profiler' 时的空白仪器屏幕。最新版本的 Xcode 6

ios - 错误域=AVFoundationErrorDomain 代码=-11821 "Cannot Decode"

ios - 在添加新值之前如何检查数组是否具有相同的对象值

ios - 在 Aspect Fit 上制作 UIView 的背景图像

applescript - 如何使用 AppleScript 从 Evernote 导出笔记?

iOS 8.1 网络应用程序忽略填充或边距顶部