gpt4 book ai didi

ios - TableView 从单独队列中的数据库填充

转载 作者:行者123 更新时间:2023-11-29 12:40:44 25 4
gpt4 key购买 nike

我正在实现一个简单的 TableView ,它从 SQLite 数据库中获取数据。我有这段代码:

-(void)fetchDataFromDb
{

[self.activityIndicator startAnimating];
[self cleanAllArrays];

__block NSMutableArray* newAllClipboards = [[NSMutableArray alloc] init];
dispatch_queue_t workingQueue = dispatch_queue_create("workingQueuee", NULL);
dispatch_async(workingQueue,
^{
newAllClipboards = [[NSMutableArray alloc] initWithArray:[self.dbAcess getAllClipBoards]];

dispatch_async(dispatch_get_main_queue(),
^{
self.allClipboards = newAllClipboards;
[self sortClipboardsSentOrDelivered];
[self.tableVIew reloadData];
[self.activityIndicator stopAnimating];
});
});
}

问题是添加时单元格是空的。有趣的是,当我在主线程上执行所有操作时,一切都很好:

-(void)fetchDataFromDb
{

[self.activityIndicator startAnimating];
dispatch_queue_t workingQueue = dispatch_queue_create("workingQueuee", NULL);
dispatch_async(workingQueue,
^{
dispatch_async(dispatch_get_main_queue(),
^{
[self cleanAllArrays];
self.allClipboards = [[NSMutableArray alloc] initWithArray:[self.dbAcess getAllClipBoards]];
[self sortClipboardsSentOrDelivered];
[self.tableVIew reloadData];
[self.activityIndicator stopAnimating];

});

});
}

我只是不明白这一点。

最佳答案

我觉得问题是因为您正尝试使用主线程以外的单独线程访问 getAllClipBoards 中的 ClipboardData 对象。 ClipboardData 中有 UI 组件。因此,您正在非主线程中访问它们,这会导致问题。

如果您尝试在主线程中调用 getAllClipBoards,那么您将看不到任何问题。

关于ios - TableView 从单独队列中的数据库填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25033858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com