Прежде всего, пожалуйста, никогда не используйте API, связанный с NSArray/NSDictionary
в Swift, для чтения списка свойств. Вы выбрасываете информацию о типе.
Однако вы можете прочитать значения с помощью
let array = NSArray(contentsOfFile: path!) as! [[String:Any]]
for item in array {
let name = item["name"] as! String
let active = item["active"] as! Bool
print(name, active)
}
Специальный и рекомендуемый API: PropertyListSerialization
:
let url = Bundle.main.url(forResource: "test", withExtension: "plist")!
let data = try! Data(contentsOf: url)
let array = try! PropertyListSerialization.propertyList(from: data, format: nil) as! [[String:Any]]
A Лучше использовать протокол Codable
и PropertyListDecoder
struct User : Decodable {
let name : String
let active : Bool
}
override func viewDidLoad() {
super.viewDidLoad()
let url = Bundle.main.url(forResource: "test", withExtension: "plist")!
let data = try! Data(contentsOf: url)
let array = try! PropertyListDecoder().decode([User].self, from: data)
for item in array {
print(item.name, item.active)
}
}
Код не должен взламывать sh. Если это так, вы допустили ошибку в дизайне