class_copyPropertyList не работает в Swift 5. В чем причина? - PullRequest
0 голосов
/ 26 марта 2019

class_copyPropertyList предоставляет пустые свойства в Swift 5, и он работал правильно в Swift 3

 extension NSObject {

      func toDictionary(from classType: NSObject.Type) -> [String: Any] {

          var propertiesCount : CUnsignedInt = 0
          let propertiesInAClass = class_copyPropertyList(classType, &propertiesCount)
          let propertiesDictionary : NSMutableDictionary = NSMutableDictionary()

          for i in 0 ..< Int(propertiesCount) {
              let property = propertiesInAClass?[i]
              let strKey = NSString(utf8String: property_getName(property)) as String?
              if let key = strKey {
                  propertiesDictionary.setValue(self.value(forKey: key), forKey: key)
              }
          }
          return propertiesDictionary as! [String : Any]
      }
    }

// вызов этого для подкласса NSObject

    let product = Product()
    let dict = product.toDictionary(from: Product.self)
    print(dict)
...