使用Swift排序数组错误

时间:2014-12-05 06:36:30

标签: arrays swift

我正在使用AFNetworking从我的服务器获取数据,我正在按如下方式对json数组进行排序:

func comparator(a: Dictionary, b: Dictionary) -> Bool {
    let first: String = a["type_name"] as String!
    let sec: String = b["type_name"] as String!
    if (first == sec) {
        let first_type: String = a["name"] as String!
        let sec_type: String = b["name"] as String!
        return first_type < sec_type
    }
    return first < sec
}
var initialArray = jsonDictionary["VALUES"] as Array<Dictionary<String, AnyObject>>
var docArray = sorted(initialArray, comparator)

当我在我的iPhone上以调试模式运行应用程序(通过xcode编译)时,这可以完美地工作。但是,当我通过Testflight,app store或adhoc部署进行此操作时,它会崩溃。我尝试用它进行一些调试,结果是排序是错误的来源。我从adhoc和app store(使用Appsee)获得的堆栈跟踪是:

_TTSGVSs26UnsafeMutableBufferPointerGVSs10DictionarySSPSs9AnyObject___GS_GS0_SSPS1____Ss21MutableCollectionType_GVSs28UnsafeBufferPointerGeneratorGS0_SSPS1____GS3_GS0_SSPS1____Ss13GeneratorType_GS0_SSPS1____SiSiSs21RandomAccessIndexType_SiSiSs18_SignedIntegerType_SiSiSs33_BuiltinIntegerLiteralConvertible_SiSiSs16SignedNumberType_SiSiS7__Si_GS0_SSPS1______TFSs14_introSortImplUSs21MutableCollectionType_USs13GeneratorType__Ss21RandomAccessIndexType_Ss18_SignedIntegerType_Ss33_BuiltinIntegerLiteralConvertible_Ss16SignedNumberType_S3_____FTRQ_GVSs5RangeQQ_5Index_RFTQQQ_9Generator7ElementS8__SbSi_T_

当我通过这样做删除上面的排序时:

var docArray = jsonDictionary["VALUES"] as Array<Dictionary<String, AnyObject>>

adhoc已部署的应用程序运行良好。上述错误的原因是什么?如何在调试模式下排序很好,但在应用程序的任何发布模式下都没有?我绝对坚持这个!

我仔细阅读了Apple的文档:

https://developer.apple.com/library/mac/documentation/General/Reference/SwiftStandardLibraryReference/Array.html

1 个答案:

答案 0 :(得分:0)

似乎这是Swift的错误,否则我不知道为什么会这样。以前我在comparator的成功块中定义了AFNetworking函数。我从那里删除了它并将它作为一个类的方法,并以某种方式修复它。我不确定为什么这是一个修复因为我在我的代码的其他部分做了类似的事情而且它无论如何都有效。