我最近在我的一個應用程序中完成了這項工作。簡而言之,您應該知道的是,實體的「屬性」應該被視爲單獨的列,其中表名可以與「實體名稱」相同。之後,如果需要同步數據,可以通過在服務器端可以檢索的API頭中設置數據來完成。
例如:假設有一個名爲PlaylistData的實體,其中包含屬性playlist_name和歌曲。服務器端的列名相同。現在你想將這些保存在服務器上。 首先將數據保存在playlistNameArray中,並將歌曲保存在songArray中。 之後 -
NSString *api = [NSString stringWithFormat:SAVE_PLAYLIST_API,id1];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:api] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60];
[request setHTTPMethod:@"POST"];
NSMutableDictionary *requestDict = [NSMutableDictionary dictionary];
[requestDict setObject:self.playlistName forKey:@"playlist_name"];
[requestDict setObject:songIdArray forKey:@"songs"];
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:requestDict
options:NSJSONWritingPrettyPrinted
error:&error];
NSString *jsonStr =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
id response = nil;
NSError *error1 = nil;
NSData *recievedData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error1];
NSString *dataReceived =[[NSString alloc] initWithData:recievedData encoding:NSUTF8StringEncoding];
NSError *error2 = nil;
//你可以看到「recievedData」審查從服務器的響應。
這是我落得這樣做。核心數據中有一個名爲isSynced的額外列 - 如果它已更新,則將其設置爲false,然後調用服務器並嘗試更新。 – Nagra