class_copyPropertyList()
возвращает UnsafeMutablePointer<objc_property_t>?
, а не UnsafeMutablePointer<objc_property_t?>
.Обычно лучше избегать явных аннотаций типов и просто писать
let properties = class_copyPropertyList(self.classForCoder, &count)
и позволить компилятору выводить тип.Затем необязательное значение необходимо развернуть, например, с помощью guard
:
guard let properties = class_copyPropertyList(self.classForCoder, &count) else {
return // Handle error ...
}
Создание Swift String
также можно упростить, что приведет к
var count = UInt32()
guard let properties = class_copyPropertyList(self.classForCoder, &count) else {
return
}
var propertyNames = [String]()
for i in 0..<Int(count) {
let propertyName = String(cString: property_getName(properties[i]))
propertyNames.append(propertyName)
}