0

我开发了一个应用程序,它有一个Core Data,现在我正在考虑Synchronize我自己的server。这是我第一次这样做,我在 Google 上也搜索了很多 StackOverflow,但我找不到明确的工作方法。

我在 上创建了相同core data的内容server,但我不知道如何知道某行是否存在synced(如何安排server和之间的连接),我是否应该在as中Client添加另一列来告诉我?!或者通过添加一个?!!..所以如果有人可以帮助我或者知道怎么做,请告诉我!!我需要逻辑方面的帮助。我正在使用方法。谢谢。 core databooleansync statustimestampREST API (POST,GET)

4

4 回答 4

1

最近我写了一篇关于同步的博客(通过 REST API 在“客户端-服务器”模型中交换数据的同步算法)。它可能会帮助您获得一些想法,为您的特定要求构建同步逻辑。

于 2013-08-27T09:32:35.723 回答
1

你可以看看使用RestKit来帮助你与服务器通信。

是的,您将需要添加一些额外的数据,以允许您确定自上次与服务器同步以来数据是否已被编辑。ABOOL应该足够了,只需在任何其他属性发生更改时设置它(您可以使用 KVO 来协助)。

您将需要创建和控制将更新发送回服务器的逻辑以及何时发送回服务器。如果您发布单个对象,则 RestKit 可以响应并自动BOOL为您将 back 设置为 false (但您是否要这样做很大程度上取决于有多少对象正在更改,它们的频率和大小 - 您不想要对服务器进行大量频繁的小更新)。

于 2013-08-21T10:51:45.840 回答
0

我最近在我的一个应用程序中做到了这一点。简而言之,您应该知道的是,您的实体“属性”应被视为单独的列,其中表名可以与“实体名称”相同。之后,如果您需要同步数据,可以通过在 API 的 header 中设置数据来完成,该数据可以在服务器端检索。

例如:假设有一个名为 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”来查看来自服务器的响应。

于 2013-08-22T10:42:35.323 回答