Ios Swift UITableView真的很慢
我有一个简单的模型Ios Swift UITableView真的很慢,ios,iphone,uitableview,swift2,Ios,Iphone,Uitableview,Swift2,我有一个简单的模型E-Numbers,它读取.csv文件。我将数据缓存到ViewController中的变量eNummers,以便执行基本数组操作,例如eNummers[0],eNummers[1] 我从tableView:cellforrowatinexpath中的数组中读取数据,但是当我滚动tableView时,它确实非常缓慢和滞后。我如何优化这一点: func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath
E-Numbers
,它读取.csv文件。我将数据缓存到ViewController中的变量eNummers
,以便执行基本数组操作,例如eNummers[0]
,eNummers[1]
我从tableView:cellforrowatinexpath
中的数组中读取数据,但是当我滚动tableView
时,它确实非常缓慢和滞后。我如何优化这一点:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("globalCell") as UITableViewCell!
if cell == nil {
cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "globalCell")
}
if (self.eNummers?.getAllNummers().rows[indexPath.row] != nil) {
cell.textLabel?.text = self.eNummers?.getAllNummers().rows[indexPath.row][0]
cell.detailTextLabel?.text = self.eNummers?.getAllNummers().rows[indexPath.row][1]
switch (self.eNummers?.getAllNummers().rows[indexPath.row][2])! {
case "GOOD":
cell.textLabel?.textColor = UIColor.greenColor()
break
case "MODERATE":
cell.textLabel?.textColor = UIColor.orangeColor()
break
case "BAD":
cell.textLabel?.textColor = UIColor.redColor()
break
default:
cell.textLabel?.textColor = UIColor.blackColor()
break
}
}
return cell
}
函数
getAllNummers()
正在加载一个CSV文件,并对每个单元格进行4次解析。这将是你的大减速。您应该加载和解析文件一次,并将值存储在属性中,然后使用该属性访问所需的值您的函数getAllNummers()
正在加载CSV文件并对每个单元格进行4次解析。这将是你的大减速。您应该加载和解析文件一次,并将值存储在属性中,然后使用该属性访问所需的值您的函数getAllNummers()
正在加载CSV文件并对每个单元格进行4次解析。这将是你的大减速。您应该加载和解析文件一次,并将值存储在属性中,然后使用该属性访问所需的值您的函数getAllNummers()
正在加载CSV文件并对每个单元格进行4次解析。这将是你的大减速。您应该加载和解析文件一次,并将值存储在属性中,然后使用该属性访问所需的值什么是getAllNummers()
do?func getAllNummers()->CSwiftV{let nummers=CSwiftV(String:self.contents as!String)返回numers}
将数字放入一个数组。您应该调用getAllNummers
一次,然后直接在cellForRowAtIndexPath
中访问数组。此外,如果您已经注册了单元类或正在使用故事板,则无法返回。Il-这似乎是事实,因为您使用了as
如果返回nil,将引发异常。getAllNummers()
做什么?func getAllNummers()->CSwiftV{let nummers=CSwiftV(String:self.contents as!String)返回numers}
将数字放入一个数组。您应该调用getAllNummers
一次,然后直接在cellForRowAtIndexPath
中访问数组。此外,如果您已经注册了单元类或正在使用故事板,则无法返回。Il-这似乎是事实,因为您使用了as
如果返回nil,将引发异常。getAllNummers()
做什么?func getAllNummers()->CSwiftV{let nummers=CSwiftV(String:self.contents as!String)返回numers}
将数字放入一个数组。您应该调用getAllNummers
一次,然后直接在cellForRowAtIndexPath
中访问数组。此外,如果您已经注册了单元类或正在使用故事板,则无法返回。Il-这似乎是事实,因为您使用了as
如果返回nil,将引发异常。getAllNummers()
做什么?func getAllNummers()->CSwiftV{let nummers=CSwiftV(String:self.contents as!String)返回numers}
将数字放入一个数组。您应该调用getAllNummers
一次,然后直接在cellForRowAtIndexPath
中访问数组。此外,如果您已经注册了单元类或正在使用故事板,则无法返回。Il-这似乎是事实,因为您使用了as
如果返回nil将引发异常。这解决了我的问题,非常感谢!:)澄清一下:我将解析部分添加到我的模型的init构造函数中,然后在tableView中调用了一个属性。这解决了我的问题,非常感谢!)澄清一下:我将解析部分添加到我的模型的init构造函数中,然后在tableView中调用了一个属性。这解决了我的问题,非常感谢!)澄清一下:我将解析部分添加到我的模型的init构造函数中,然后在tableView中调用了一个属性。这解决了我的问题,非常感谢!)澄清一下:我将解析部分添加到了模型的init构造函数中,然后在tableView中调用了一个属性。