我有一个正在执行afnetworking请求的视图控制器,在响应时,我将该响应添加到我的主MOC并保存。 我的应用程序是一个实时应用程序,因此,执行某些类型的请求将通过长期存在的Web套接字从服务器向客户端发送消息。发生的事情是,当客户端发送单个消息时,他将通过套接字接收相同的消息(我将在稍后添加apns功能,因此他也将通过apns接收相同的功能)
我希望网络套接字使用背景上下文,因此我的用户界面征税较少。 现在我正在执行提取以查看数据是否已存在。如果没有,那么我将添加到上下文中。这个检查是在插座侧和api侧完成的。
我担心的是,由于它们都会以如此接近的时间间隔相互检查,它们是否可能都说数据不存在,然后两者都会添加到数据库中,导致不必要的重复?
这是我的澄清代码:
if ([Chat fetchById:[jsonBody valueForKey:@"id"] withContext:self.managedObjectContext]==nil) {
NSLog(@"GOT NIL FROM SOCKET");
Chat *chat = [Chat initWithContext:self.managedObjectContext];
chat.id = [jsonBody valueForKey:@"id"];
chat.body = [jsonBody valueForKey:@"body"];
chat.user = [User fetchByID:[jsonBody valueForKey:@"user_id"] inContext:self.managedObjectContext];
NSString *date = [jsonBody valueForKey:@"created_at"];
chat.created_at = [TimeFormatter NSDateFromServerString:date];
chat.group = [Group fetchByID:[jsonBody valueForKey:@"grp_id"] inContext:self.managedObjectContext];
[self.managedObjectContext save:nil];
}