[英]Create NSMutableArray from Array<T> in Swift
我正在嘗試編寫一個擴展,其中我定義了一個新方法,用於使用NSSortDescriptor
類按屬性對包含的對象進行就地排序。 但是,由於某種原因,我未能填充可變版本的self
並收到以下錯誤:
Cannot find an initializer for type NSMutableArray that accepts an argument list of type (array: Array<T>)
這是我的方法:
extension Array {
public mutating func sortInPlace(field: String, ascending: Bool) {
let mutableArray = NSMutableArray(array: self) // error here.
let sortDescriptor = NSSortDescriptor(key: field, ascending: ascending)
mutableArray.sortUsingDescriptors([sortDescriptor])
self = mutableArray as AnyObject as! [Generator.Element]
}
}
我也嘗試了以下但沒有運氣:
let mutableArray = NSMutableArray(array: self as! [AnyObject])
沒有看到您的擴展定義很難說,但這對我有用:
extension Array where T : AnyObject {
func toMutableArray() -> NSMutableArray {
return NSMutableArray(array: self)
}
}
let array: [NSString] = ["A", "B"]
let mArray = array.toMutableArray()
print(mArray) // ( A, B )
這里的問題是您需要將Array
上的擴展限制為只接受AnyObject
的數組。 String
是一個結構體,而不是一個類( AnyObject
被限制為引用類型)。 這也是為什么我需要在數組中使用[NSString]
類型說明符的原因。 否則,它將是一個結構數組,而不是一個String
值數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.