Я пытаюсь создать расширение Swift для NSArray, которое использует некоторые методы Swift, но у меня возникают проблемы с первым шагом создания правильно отформатированного массива Swift из NSArray.
Входящий NSArray выглядит как
[@"Hello",@"Me",@"That",@"Me",@"Hello",@"Me",@"as",@"the"]
Вот различные версии расширения:
Эта версия создает допустимый массив, но, поскольку массив представляет собой NSArray, а не массив, происходит сбой на счетчиках строк [item] с ошибкой
не может индексировать значение типа '[String: Int]' с индексом типа 'Any'
public extension NSArray {
public var sortedArray: NSArray {
let array : NSArray = self
for item in array {
counts[item] = (counts[item] ?? 0) + 1
}
print("counts",counts)
Следующий работает, но не принимает массив в качестве входных данных
public extension NSArray {
public var sortedArray: NSArray {
var array = ["Hello","Me","That","Me","Hello","Me","as","the"]
for item in array {
counts[item] = (counts[item] ?? 0) + 1
}
print("counts",counts)
Следующие два метода компилируются, но array2 и array3 остаются пустыми
public extension NSArray {
public var sortedArray: NSArray {
var array2: [String] = self.flatMap { $0 as? String } //This compiles but array is empty
var array3: [String] = self.compactMap({ $0 as? String }) //This compiles but
for item in array2 {
counts[item] = (counts[item] ?? 0) + 1
}
print("counts",counts)//prints 0 as the array is empty
Примечание: когда я вставляю точку останова в начале расширения, self является допустимый NSArray с большим количеством элементов.
Спасибо за любые предложения.