SortInPlace表达式太复杂了 - Xcode更新

时间:2015-09-22 16:26:52

标签: ios xcode swift xcode7

更新到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中的一个结构,它迫使编译器迭代所有结构来找到它。这使得表达式需要更多时间来编译。

1 个答案:

答案 0 :(得分:0)

错误消息

  

表达太复杂,无法在合理的时间内解决

可能有各种原因。一个是编译器无法推断出 表达式的类型自动从上下文。在那种情况下 有助于添加显式类型注释。在你的情况下

appDelegate.all_breeds!.sortInPlace { (a : AppDelegate.Breed, b : AppDelegate.Breed) -> Bool in
    (a.breedNameES == nil) ||
    (b.breedNameES == nil) ||
    (a.breedNameES! < b.breedNameES!)
}