Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:展开会导致Swift编译缓慢_Ios_Uitableview_Swift - Fatal编程技术网

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也引用了你的。