2015-08-29 27 views
2

我是Evernote SDK開發新手,正在使用Evernote推薦的evernote雲SDK 2.0。使用Evernote Cloud SDK 2.0將NSString從ENNoteContent中取出

但是,我無法從ENNoteContent對象中獲取NSString內容。我嘗試了以下從網上搜索,但似乎沒有與雲SDK,因爲我猜他們都是爲舊版本的印度軟件開發工具包...

1使用「convertENMLToHTML」方法。

根據thisthis,我可以直接在ENNoteContent對象喜歡這個convertENMLToHTML:note.content上調用convertENMLToHTML。但是,在雲SDK中,這導致ENMLUtility中的異常終止應用程序,因爲convertENMLToHTML期望NSString而不是ENNoteContent,並且此函數所做的第一件事是嘗試調用[enmlContent dataUsingEncoding:NSUTF8StringEncoding]],如果enmlContent是指向ENNoteContent但不是指向NSString的指針。

2試圖獲取_emml對象了ENNoteContent對象

post有呼叫[note.content enml]的報價,但是這又爲對象enml沒有在接口中定義不與雲SDK工作。

有誰知道如何從ENNoteContent中獲取NSString?我希望這是一個非常簡單的過程,但是我很驚訝我無法找到適用於Cloud SDK的任何內容。

3使用generateWebArchiveData方法

低於每腰帶的回答,我也試圖使用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輸出「空」的筆記,我已經驗證了合法的內容。

作爲一個臨時攻擊,我們在ENNoteContent.h中添加了@property (nonatomic, copy) NSString * emml; ,並且在ENNoteContent.m中刪除了相同的行以解決此問題。

回答

1

你接近。上面的技術#1是你想要的,但正如你發現enml屬性在「默認」SDK中是私有的。導入「高級」標題,您可以訪問note.content.enml。這是一個字符串,如果您喜歡HTML表示形式,您可以將它發送到convertMLMLHTML。

請注意,現有筆記沒有「明文」字符串內容。您將始終將其視爲標記,如果您想擺脫標記,那麼這樣做超出了SDK的範圍 - 如何做到這一點取決於您處理的內容的外觀。

相關問題