同じプロトコルに準拠する任意の2つのオブジェクトの間でマップしたいと思う。署名を使用して機能を経由してこれを行うに便利である。さらに良いプロトコル準拠タイプ間のSwiftでのマッピング
func mapFrom<T>(objectA: T, to inout objectB: T)
けれども(不変のタイプの)形でそれを持っているだろう:
func map<T, U: T>(from source: T) -> U
それが初期化することができ何とかa U
オブジェクトの値はT
です。
実行時間をObjective-C
ではなくSwift Reflectionで実行したいと考えていますが、それが唯一の方法だった場合は解決します。どういうわけか、それは驚くべきことではない反省を伴って行われる可能性がありますが、私はどのように見えません。
私がこれをやりたい理由は、それぞれのプロトコルに準拠したRealmクラスが変更可能であり、これらを不変の構造体タイプにマップしたいからです。
例は次のようになります。
/**
The protocol.
*/
protocol Food {
var name: String { get }
var weight: Float { get }
var price: Float { get }
}
/**
The mutable Realm class representation.
*/
final class FoodEntity: Object, Food {
dynamic var name = ""
dynamic var weight = 0.0
dynamic var price = 0.0
}
/**
The final struct I want to map to from the Realm representation.
*/
struct FoodProduct: Food {
let name: String
let weight: Float
let price: Float
}
私は手動のような何かをすることなく、FoodProduct
にFoodEntity
をマップすると、一般的な関数やメソッドを持ってできるようにしたいと思います:
FoodProduct(name: entity.name, weight: entity.weight, price: entity.price)
どうすればいいですか?
あなたの質問はとても混乱しています。編集してください。 –
これは開始に役立ちます:http://stackoverflow.com/a/24069875/3141234 – Alexander