问答

ios – 如何在异步方法中准备数据后为tableview重新加载数据

 来源    2018-10-10    0  

我使用URLSession从tableview’data的资源API获取数据.所以我需要在URLSession任务准备好的数据之后重新加载数据().但这将导致,

UITableView.reloadData() must be used from main thread only

当我运行应用程序时,开始时tableview是空白的.只有在我屏幕显示数据后才会显示.但是如果不在URLSession任务中调用reloadData(),则屏幕一直是空白的.

func getData() {
    let dataUrl = URL(string: "http://www.example.com/app/?json=1")
    let task = URLSession.shared.dataTask(with: dataUrl! as URL) {data, response, error in
        guard let data = data, error == nil else { return }
        do {
            self.data = try JSONSerialization.jsonObject(with: data, options: []) as! [String:Any]
            self.tableView.reloadData()
            }

        } catch let error {
            print(error)
        }
    }
    task.resume()
}

你永远不应该从后台线程访问任何UI,你必须从主线程中执行它,为此你可以使用gcd:

DispatchQueue.main.async {
    self.tableView.reloadData()
}

虽然从后台线程访问UI(读取所有UIKit)有时可能会工作,但最终会出现错误,包括崩溃,炸毁显示或gazenbugs.

ios – 如何在PFQueryTableViewController中调用queryForTable从Parse云重新加载数据?
问答我有一个PFQueryTableViewController表,它从解析数据库获取信息.当用户选择一行时,它会转到另一个VC.在那个VC用户中删除Parse表中的一些数据.这个Parse表与我加载PF ...
ios – 以编程方式创建的tableView重新加载数据
问答我已经查看了与此问题相关的其他一些SO问题,但没有找到一个处理我的具体情况的问题.我在一个方法中以编程方式创建可变数量的tableViews.稍后,我想在另一个方法中的任何一个tableView中重新 ...
如何更改uitableview中的高度单元格,无需重新加载数据
问答我使用UITableView,我想改变高度不同的单元格.但是我不想使用重新加载数据,因为我的表视图包含UITextView,我现在编辑,UIKeyBoard已经启动.::您正在寻找UITableVie ...
在ExtJs中的行扩展器的ajax上加载数据
问答我正在使用Sencha ExtJs网格4.2.我正在为我的网格使用Expander插件,并尝试从Ajax扩展区域下加载数据.现在我正在使用此代码显示有关扩展的数据. plugins: [{ ptype ...
echarts在.Net中使用实例(二) 使用ajax动态加载数据
日志前一篇文章链接:echarts在.Net中使用实例(一) 简单的Demo 通过上一篇文章可以知道和echarts参考手册可知,series字段就是用来存储我们显示的数据,所以我们只需要用ajax来获取 ...
ios – 在后台线程中写入Realm后,主线程看不到更新的数据
问答>清除数据库. >进行API调用以获取新数据. >将从API检索到的数据写入后台线程中的数据库中. >从主线程上的数据库中读取数据并渲染UI. 在步骤4中,数据应该是最新数据, ...
ios – 为什么iAd在从超级视图中删除后仍然加载数据,这可以停止吗?
问答我有一个小的应用程序与iAds,并允许人们付费升级. iAd在应用程序的NIB中设置.我在主UIViewController的viewDidLoad方法中检查购买状态,并在ADBannerView出口 ...
ios – 在tvOS中重新加载数据后,Collection视图的最后一个聚焦索引路径丢失了
问答在我的tvOS应用程序中,我有一个集合视图,我将其remembersLastFocusedIndexPath设置为true.由于这还不足以得到这种行为,我还在我的UIViewController中重写 ...
ios – 如何在Xcode6中重置故事板上的特定大小类数据?
问答我正在使用大小类来创建一个故事板,可以针对所有不同的屏幕尺寸和方向.我一直在Any Width-Any Height size类中工作.我遇到了显示问题并决定在Compact Width – Regu ...
ios – 删除Core Data中的记录后,无法删除索引处的表行
问答我首先要说的是,我非常擅长在Xcode / Swift中制作应用程序.我从来没有真正用Obj-C做过任何事情所以Swift真的是我第一次进入iOS编码. 我的问题是我在删除核心数据记录后尝试删除表格单 ...
ios – 如何在WatchKit表视图中重新加载数据?
问答我有一个带有Tableview的iPhone应用程序,其数据来自CoreData. 相同的数据也显示在手表应用程序中: 如果我从iPhone应用程序添加一行: 我在手表应用程序中重新加载数据: 我看到 ...
ios – UICollectionView单元格在重新加载数据后保持高亮
问答我有一个UICollectionView,单元格内的标签会自动定期更改.当这个更新触发时,我在UICollectionView上调用reloadData,并且我设置了单元格以更改[UICollecti ...
iphone – 在ios应用程序中向下滚动时自动加载数据
问答我想在我的应用程序中执行以下操作: 我从在线服务器获取数据,然后将它们放在单元格中,我需要的是在向下滚动时自动加载数据,例如,当应用程序运行时加载10个单元格,然后当我向下滚动10个其他单元格时动态加 ...
ios – 选择searchBar时在UISearchController中预加载数据
问答在我的应用程序中,我使用UISearchController(iOS 8中的新增功能)来显示搜索结果. 有没有办法显示一组默认结果,当用户点击searchBar而不输入任何内容时会显示这些结果? 我找 ...
ios – 如何在UITextView中获取文本后设置textAlignment?
问答我试图在文本方向的基础上设置textAlignment如果我的textView有文本(从右到左像阿拉伯语)方向然后我想设置textAlignment NSTextAlignmentRight否则我的对 ...
ios – 在AFNetworking中成功调用后,self.tableView reloadData不起作用
问答我有一个类,类似于本教程http://www.raywenderlich.com/59255/afnetworking-2-0-tutorial的AFHTTPSessionManager组件 但是,[ ...
ios – 何时在UITableViewController中加载数据?
问答我目前正在UITableViewController的viewDidLoad方法中加载来自JSON服务的数据.问题是数据需要时间来检索和解析,视图需要时间来创建. 加载此数据的最佳位置在哪里?我假设在 ...
javascript – 如何在角度js中从tsv加载数据后呈现指令
问答我想整合d3.js和angularjs.我必须绘制一个玲图.数据从tsv文件加载. 我在渲染图时遇到问题,错误是数据尚未加载并且图形呈现.我希望当数据加载到范围变量中时,应该不显示图形.请帮忙. 这是 ...
ios UICollectionView 加载数据后 滑动卡顿问题
日志最近项目的资源图片变大了,滑动时总是卡顿,在这里用NSOperationQueue解决了一下 .h 文件 @interface CollectionViewCell : UICollectionVie ...