簡體   English   中英

使用 Swift 排序數組錯誤

[英]Sort array error with 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、應用程序商店或臨時部署執行此操作時,它會崩潰。 我試圖用它進行一些調試,結果發現排序是錯誤的來源。 我從臨時和應用商店(使用 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>>

臨時部署的應用程序運行良好。 出現上述錯誤的原因是什么? 為什么我的排序在調試模式下正常,但在應用程序的任何發布模式下都沒有?? 我完全堅持這個!

我徹底閱讀了蘋果的文檔:

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

似乎這是Swift一個錯誤,否則我不知道為什么會這樣。 以前,我在AFNetworking的成功塊中定義了comparator函數。 我從那里刪除了它,並將它作為類的方法,並以某種方式修復了它。 我不確定為什么這是一個修復程序,因為我在代碼的其他部分做了類似的事情並且無論如何它都有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM