Для наблюдателей Swift вы можете получить эту функцию, используя функцию Encodable
. Я объясню, как:
Соответствовать вашему объекту протоколу Encodable
class ExampleObj: NSObject, Encodable {
var prop1: String = ""
var prop2: String = ""
}
Создать расширение для Encodable
, чтобы предоставить toDictionary
функциональность
public func toDictionary() -> [String: AnyObject]? {
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
guard let data = try? encoder.encode(self),
let json = try? JSONSerialization.jsonObject(with: data, options: .init(rawValue: 0)), let jsonDict = json as? [String: AnyObject] else {
return nil
}
return jsonDict
}
Вызовите toDictionary
для вашего экземпляра объекта и получите доступ к свойству keys
.
let exampleObj = ExampleObj()
exampleObj.toDictionary()?.keys
Вуаля! Получите доступ к вашей недвижимости следующим образом:
for k in exampleObj!.keys {
print(k)
}
// Prints "prop1"
// Prints "prop2"
Официальное объяснение находится в документации SDK . Предполагая, что эти три являются единственными каталогами ресурсов макета:
res / layout-land-finger /
будут использоваться, если устройство имеет сенсорный экран, удобный для пальцев (т.е. емкостный, а не резистивный). сенсорный экран или без сенсорного экрана) и удерживается в альбомной ориентации. res / layout-finger /
будут использоваться, если устройство оснащено сенсорным экраном, удобным для пальцев, и не удерживается в альбомной ориентации . res / layout /
будут использоваться, если устройство имеет резистивный или не сенсорный экран