ли ваш класс в индекс?
Я был в состоянии создать тестовый класс, который может использовать аксессор КВЦ как так:
class TestObject
{
var name:String
var numbers:[String:Int] = [String:Int]()
init(name:String)
{
self.name = name
}
subscript(index: String) -> Int? {
get {
return numbers[index]
}
set(newValue) {
numbers[index] = newValue
}
}
}
Испытано со следующим кодом:
let testObject1 = TestObject(name: "test1")
testObject1["home-phone"] = 1234
testObject1["mobile-phone"] = 5678
let testObject2 = TestObject(name: "test2")
testObject2["office"] = 0987
testObject2["mobile-phone"] = 6543
let array : [TestObject] = [testObject1, testObject2]
var results = array.map({$0["office"]})
print("Results:\(results)")
results = array.map({$0["mobile-phone"]})
print("Results:\(results)")
производит следующий результат:
Results:[nil, Optional(987)]
Results:[Optional(5678), Optional(6543)]
Почему-то мой компьютер решил, что он больше не хочет запускать какой-либо код Swift (полезно ...), но я уверен, что вы можете ru n это и просто удалить из нее скобки? Я думаю, что оба способа действительны. Вы пробовали это на детской площадке? TBH, я не вижу, как ошибка, которую вы получаете, связана с кодом, который вы опубликовали? Это определенно от этого? – Fogmeister
Не могли бы вы разместить весь прецедент? Какой тип вашего массива? – Sulthan
@Fogmeister «Мой компьютер решил, что он больше не хочет запускать какой-либо код Swift». Вау, я думаю, мне хотелось бы больше узнать об этом _that_! – matt