【问题标题】:Cannot call function from self on Array Extension Swift无法在数组扩展 Swift 上从自身调用函数
【发布时间】:2014-09-27 22:06:24
【问题描述】:

我正在迅速扩展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 是否可变?

【问题讨论】:

    标签: arrays sorting swift


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      刚刚想通了:在func前加mutating

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-28
        • 2022-06-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多