我是 Evernote SDK 开发的新手,我正在使用 Evernote 推荐的 Evernote 云 SDK 2.0。
但是,我无法从 ENNoteContent 对象中获取 NSString 内容。我已经尝试了以下在线搜索,但似乎没有一个适用于 cloud sdk,因为我猜它们都是用于旧版本的 Evernote SDK...
1 使用“convertENMLToHTML”方法。
根据this和 this ,我可以直接在 ENNoteContent 对象上调用 convertENMLToHTML,就像 convertENMLToHTML:note.content 一样。但是,在云 SDK 中,这会导致 ENMLUtility 中的异常终止应用程序,因为 convertENMLToHTML 需要一个 NSString 而不是 ENNoteContent 并且此函数所做的第一件事是尝试调用 [enmlContent dataUsingEncoding:NSUTF8StringEncoding]] 如果 enmlContent 是指向 ENNoteContent 的指针而不是指向 NSString 的指针,则会导致异常。
2 尝试从 ENNoteContent 对象中获取 _eml 对象
这个 post有一个调用 [note.content enml] 的引用,但这又不适用于 cloud sdk,因为对象 enml 未在接口(interface)中定义。
有谁知道如何从 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 中的同一行以暂时解决此问题。
Best Answer-推荐答案 strong>
你很接近。上面的技术 #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/
|