2015-08-29 3 views
2

Я новичок в разработке Evernote SDK и использую Evernote cloud SDK 2.0, как рекомендовано Evernote.Получите NSString из ENNoteContent с Evernote Cloud SDK 2.0

Однако у меня возникли проблемы с получением содержимого NSString из объекта ENNoteContent. Я пробовал следующие поиски в Интернете, но никто не работает с облачным sdk, поскольку я думаю, что они все для старой версии Evernote SDK ...

1 Используя метод "convertENMLToHTML".

Согласно this и this, я мог бы назвать convertENMLToHTML непосредственно на объекте ENNoteContent много, как этот convertENMLToHTML:note.content. Однако в облачном SDK это привело к исключению внутри ENMLUtility, которое завершает приложение, потому что convertENMLToHTML ожидает NSString в отличие от ENNoteContent, и первое, что делает эта функция, это попытка вызвать [enmlContent dataUsingEncoding:NSUTF8StringEncoding]], который вызвал исключение, если enmlContent является указателем на ENNoteContent, но не указатель на NSString.

2 Попытка получить _emml объект из объекта ENNoteContent

Это post имеет цитату вызова [note.content enml], но это опять-таки не работает с облаком, как объект SDK enml не определен в интерфейсе.

Кто-нибудь знает, как можно получить NSString из ENNoteContent? Я ожидал бы, что это будет очень простой процесс, но я удивлен, что не смог найти ничего, что работает для Cloud SDK.

3 Использование метода generateWebArchiveData

ответ Per для Sash ниже, я также попытался использовать метод generateWebArchiveData в примере из облака SDK. Код у меня выглядит следующим образом:

[[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 выводит «нуль» для примечания, что я проверенный с законным содержанием.

В качестве временного взлома мы добавили @property (nonatomic, copy) NSString * emml; в ENNoteContent.h и удалили ту же строку в ENNoteContent.m, чтобы обойти это пока.

ответ

0

Вы должны проверить свои образцы в комплекте с SDK, кажется, -[ENNote generateWebArchiveData:] получите вы HTML NSData в блоке завершения

https://github.com/evernote/evernote-cloud-sdk-ios/blob/master/Getting_Started.md#downloading-and-displaying-an-existing-note может также помочь

+0

Спасибо Sash. Это хорошая идея, но, к сожалению, я не думаю, что это работает.В этом тесте я уточню основной вопрос. –

1

Вы близки. Техника № 1 выше - это то, что вы хотите, но поскольку вы обнаружили, что свойство enml является приватным в SDK по умолчанию. Импортируйте «расширенный» заголовок, и у вас будет доступ к note.content.enml. Это строка, и вы можете отправить ее в convertENMLtoHTML, если вы предпочитаете представление HTML.

Обратите внимание, что для существующей заметки нет текстового содержимого «открытого текста». Вы всегда будете видеть это как разметку, и если вы хотите избавиться от разметки, это выходит за рамки SDK - как это все зависит от того, как выглядит контент, с которым вы имеете дело.

 Смежные вопросы

  • Нет связанных вопросов^_^