Open mazllia opened 10 years ago
我又想起來1個舊的問題
1.local 端新增的note 準備上傳給server時,noteUID = 啥?(之前我開玩笑說是-1...)
2.下載檔案時的儲存位置,我要如何得知。(這時候我手上並沒有Multimedia 的物件)
3.假如note 發送給3個人,要如何判定此note 是否已被接收、已讀。(1個人以上接收就判定已接收嗎?)
@JASPER012: 昨天在你那邊編輯的資料最後沒有按update,最後資料還是沒有更新上去… 你還記得漏了什麼嗎?
API: -(NSString *)registerUseraccount:(NSString *)facebookUID;
,facebookUID可以由property拿到,不需額外參數傳遞
localURL
的 code (下面我有附)來決定儲存位置。
getLastestNotes:
,甚至拿不到 note 物件pushNotes: contact:
,從 note.media 可以拿到物件- (NSString *)localURL
{
NSError *err;
NSString *documentURL = [[[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:&err] absoluteString];
if (err) {
[[NSException exceptionWithName:@"Multimedia(Create) localURL Directory" reason:[err localizedDescription] userInfo:nil] raise];
}
return [documentURL stringByAppendingPathComponent:self.fileName];
}
4.我覺得需要新增1個delegate api 來負責處理上傳檔案的結果。
當我上傳所有檔案結束,會呼叫這個 delegate 並傳一個 array給這個api 。
此array 每個element 的內容為上傳失敗的filename ,假如全部檔案上傳成功則array 是空的。
4.我覺得這個功能應該是由 - (void)serverCommunicatorNotesSynced:(NSArray *)syncedNoteDictionaries;
擴充完成。透過 "ServerMultimediaSync": true/false
這個新定義的 constant 存在 syncedNoteDictionaries 中來指示 ServerCommunicator 下載檔案的成功與失敗。
- (BOOL)pushNotes:(NSArray *)notes contacts:(NSArray *)contacts;
再同步一次5.我在實作 ServerSynchronizer 的時候已經把 ServerCommunicator 的呼叫都放在副執行緒了,所以如果你不熟悉 concurrency programming,那就放心交給我吧!
發現問題:"After pulling, local.data.sync==NO means local data is newer than server, server's data will be ignored",所以我需要在 delegate methods 中新增 parameter fromAction:(ServerAction)action
以及一個 enum:
typedef enum {
ServerActionPush,
ServerActionPull
} ServerAction
第4點的解決方式是,假如我上傳n個note。
最後這n個note 的資訊也要出現在syncedNoteDictionaries 中來指示嗎?
所以說最後syncedNoteDictionaries 包括了 1.我自己push的note 2.別人寄給我 3.別台機器同步更動的note
4.是的
提議:改名 ServerMediaFileList 為 ServerNoteMediaFileList
因為它不是 Multimedia 的一個 attribute,而是 Note JSON 的一個陣列名稱
#define ServerMediaFileList @"file_list"
#define ServerNoteUserUID @"user_uid"
這個似乎沒有用到,刪掉?
New properties inside the .m file: