我有一个多线程应用程序并且我有一个问题,我可以打开一个项目以在 UIViewController 中进行更改,但另一个线程中的数据已经可以更改,并且当我单击提交按钮时 - 我重写了另一个线程所做的更改。(例如,物品的数量发生了变化——有人在管理员更改仓库中物品的数量时购买了它)。
所以现在我有一个 UIViewController 可以编辑项目并进行如下更改:
- (IBAction)submitButton:(id)sender
{
NSDictionary *changedData = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:nameField.text, priceField.text, quantityField.text, _itemUUID, nil]
forKeys:[NSArray arrayWithObjects: @"Name", @"Price", @"Quantity", @"UUID", nil]];
[[EADataManager sharedInstance] updateItemWithData:changedData atUUID:_itemUUID];
[self.navigationController popViewControllerAnimated:YES];
}
以及我的 dataManager 类中的数据更新方法:
- (void) updateItemWithData:(NSDictionary *)data atUUID:(NSString*)UUID
{
[self networkActivityIndicatorVisible:YES];
dispatch_barrier_async(_dataManagerQueue, ^{
[NSThread sleepForTimeInterval:5.0];
NSInteger path = [self indexFromObjectUUID:UUID];
if (path != NSNotFound)
{
[_items replaceObjectAtIndex:path withObject:data];
[_dataStorageAdapter saveFileWithData:_items];
} else {
[_items addObject:data];
[_dataStorageAdapter saveFileWithData:_items];
}
dispatch_async(dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] postNotificationName:EADataManagerUpdateViews
object:nil];
});
[self networkActivityIndicatorVisible:NO];
});
}
所以可以从不同的线程或其他方法编辑该项目,我不知道如何使其正常工作。我相信代表团对此很好,但我不能在这里实施,有什么想法吗?