arrays - 使用 Swift 排序数组错误

标签 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 上以 Debug模式(通过 xcode 编译)运行该应用程序时,这非常有效。但是,当我通过 Testflight、应用程序商店或临时部署执行此操作时,它会崩溃。我尝试用它进行一些调试,结果发现排序是错误的来源。我从 adhoc 和应用商店(使用 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>>

临时部署的应用程序运行良好。出现上述错误的原因是什么?为什么我的排序在 Debug模式下很好,但在应用程序的任何 Release模式下都没有?我完全坚持这一点!

我彻底阅读了 Apple 的相关文档:

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

最佳答案

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

关于arrays - 使用 Swift 排序数组错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27310196/

相关文章:

c++ - 无法分配功能指针的2D数组

php - 基于种子的改组数组以获得始终相同的结果?

ios - 在 swift 中使用 JSONSerialization 和 JSONDecoder 有什么区别?

ios - 如何从具有多个单元格原型(prototype)的 UITableView 中捕获单元格数据?

ios - didSelectRow 未很好地注册单元格触摸

c++ - 在c++中的函数中传递可变大小的多维数组

C 数组,我的内存会发生什么

arrays - VBA Excel 计算特定值

swift - 未收到 NSWorkspace 通知

json - 在 Swift 中处理 JSON 文件的嵌套 for 循环