arrays - 无法在 Array Extension Swift 上从自身调用函数

标签 arrays sorting swift

我正在扩展 Array快速上课。我需要对数组进行排序,但是当我尝试这样做时,出现错误 Immutable value of type 'Array<T>' only has mutating members named 'sort'

这是我的扩展:

import UIKit

extension Array {

    func sortedArrayByTimeUsingKey(key: String, ascending: Bool) {

        sort { (firstObject, secondObject) -> Bool in

            let firstDict = firstObject as [String: AnyObject]
            let secondDict = secondObject as [String: AnyObject]

            let firstDateString = firstDict[key]! as String
            let secondDateString = secondDict[key]! as String

            let dateFormatter = DateFormatter()

            let firstDate = dateFormatter.dateFromString(firstDateString)!
            let secondDate = dateFormatter.dateFromString(secondDateString)!

            let order = firstDate.compare(secondDate)

            switch order {
            case .OrderedAscending:
                return ascending ? true : false
            case .OrderedDescending:
                return ascending ? true : false
            default:
                return true
            }
        }
    }

}

我怎么投 self是可变的,或者我如何检查 self是可变的吗?

最佳答案

如果该方法修改了实例本身,则该方法必须是可变的。所以只需在 func 之前添加 mutating 关键字即可。

关于arrays - 无法在 Array Extension Swift 上从自身调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26079642/

相关文章:

c# - 组合来自多个列表的信息

arrays - 如何在不复制的情况下从 UnsafeBufferPointer 创建数组?

ios - Facebook 登录后 Segue 不起作用

java - 快速排序算法改进

ios:公钥 SSL 固定返回 Nil

c - 将二维字符数组传递给 C 中的函数

javascript - JS 循环和填充数组。哪个更快?

java - 如何在字节数组 Java 中表示 header 值和实际消息?

java - 在Java中读取csv时删除第一行

javascript - 如何将元素移动到对象数组的顶部?