更新到Xcode 7之后,我的iOS应用程序停止了编译(由于多次"更改"),但是我已经想出了一些我不知道如何简化的东西。我需要根据以下三个条件对数组进行排序:
appDelegate.all_breeds!.sortInPlace { (a, b) -> Bool in
(a.breedNameES == nil) ||
(b.breedNameES == nil) ||
(a.breedNameES! < b.breedNameES!)
}
基本上我需要看看西班牙语中的品种A是否为零,或者西班牙语中的品种B是否为零,否则我需要比较两个品种,并按字母顺序对它们进行排序。
在我更新到xCode 7之前,这没有问题,现在我得到的错误是
Expression was too complex to be solved in reasonable time;
consider breaking up the expression into distinct subexpressions.
问题是我无法将其分解为子表达式,它是我能想到的基本功能。
有任何想法如何解决这个问题?
显然问题的一部分是Breed是我的AppDelegate中的一个结构,它迫使编译器迭代所有结构来找到它。这使得表达式需要更多时间来编译。
答案 0 :(得分:0)
错误消息
表达太复杂,无法在合理的时间内解决
可能有各种原因。一个是编译器无法推断出 表达式的类型自动从上下文。在那种情况下 有助于添加显式类型注释。在你的情况下
appDelegate.all_breeds!.sortInPlace { (a : AppDelegate.Breed, b : AppDelegate.Breed) -> Bool in
(a.breedNameES == nil) ||
(b.breedNameES == nil) ||
(a.breedNameES! < b.breedNameES!)
}