Ios Swift:展开会导致Swift编译缓慢
在Ios Swift:展开会导致Swift编译缓慢,ios,uitableview,swift,Ios,Uitableview,Swift,在func tableView(tableView:UITableView!,cellForRowAtIndexPath:nsindepath!)->UITableViewCell!{ 这行代码使swift编译速度非常慢: cell!.detailTextLabel.text = child.year! + " " + child.make! + " " + child.model! 如果我有这一行代码的话,构建这个项目需要1分钟44秒,99%的时间都是在“编译Swift源文件”。 如果我把这
func tableView(tableView:UITableView!,cellForRowAtIndexPath:nsindepath!)->UITableViewCell!{
这行代码使swift编译速度非常慢:
cell!.detailTextLabel.text = child.year! + " " + child.make! + " " + child.model!
如果我有这一行代码的话,构建这个项目需要1分钟44秒,99%的时间都是在“编译Swift源文件”。
如果我把这行改成
cell!.detailTextLabel.text = " "//child.year! + " " + child.make! + " " + child.model!
我只需要5到6秒就可以完成这个项目。
我想知道为什么这行代码会导致编译时间过长
在我的子模型中,它们声明为:
var name:String?
var year:String?
var make:String?
var model:String?
以及init:
init(name:String!, ... ,year:String!, make:String!, model:String!, ...){
self.name = name
...
self.year = year
self.make = make
self.model = model
}
第一部分构建一个孩子:
Child(name:cName,...,year:cYear,make:cMake, model:cModel,...)
是的,我就这个缓慢的编译问题提交了一份bug报告(17585851),你也应该这样做;苹果发送的用例越清晰越好。我的缓慢代码是这种形式的多次出现:
let title = obj.valueForProperty(MPMediaItemPropertyTitle) as? String
self.titles += title ? title! : ""
(如您所见,它正在进行零测试/展开)。通过以不同的方式执行相同的操作来解决此问题虽然很麻烦,但并不困难,您也应该这样做。但是,请先提交错误报告!当您的类型声明为可选类型时,您需要进行展开。在swift中,可选类型是一种可能有值也可能没有值的类型。例如,我可以声明字符串为: var collegeName:字符串 类型声明末尾的“?”显示collegeName可能有值,也可能没有值,为了获得该值,必须使用!运算符将其展开以获得其值 据我所知,在您的案例中,name字段被声明为字符串,而year、make和model被声明为可选字符串,这就是为什么您需要展开这些字段以从中获取值 还可以使用“!”运算符声明类型,如: var collegeName:绳子
这意味着这是一个可选字符串,但它会自动为您展开,因此您不需要使用“!”然后打开此可选项。您不应该在一个问题中问两个问题。编译速度慢是一个问题。需要打开时是另一个问题!如果您单独问第二个问题,我将尝试单独回答。@matt谢谢,请参阅我的第二个问题。我同意您关于optionals的说法。孩子不同意me也被声明为可选。这就是为什么我很困惑,因为我不需要打开它。我只是忘了在我的问题中包含它的代码。var name:String?第二个问题现在在这里,你是如何以不同的方式来做的,并使编译更快?我如何向Apple发出错误?谢谢!我记录了我在这里遇到的情况:并且报告了一个bug也引用了你的。