Swift中协议一致性类型之间的映射
我想在符合相同协议的任意两个对象之间进行映射。通过带有签名的函数执行此操作会很方便:Swift中协议一致性类型之间的映射,swift,dictionary,reflection,Swift,Dictionary,Reflection,我想在符合相同协议的任意两个对象之间进行映射。通过带有签名的函数执行此操作会很方便: func mapFrom<T>(objectA: T, to inout objectB: T) 我希望能够有一个通用函数或方法,用于将FoodEntity映射到FoodProduct,而无需手动执行以下操作: FoodProduct(名称:entity.name,重量:entity.weight,价格:entity.price) 如果可以的话,这怎么办?我想你正在寻找这样的东西 func fe
func mapFrom<T>(objectA: T, to inout objectB: T)
我希望能够有一个通用函数或方法,用于将FoodEntity
映射到FoodProduct
,而无需手动执行以下操作:
FoodProduct(名称:entity.name,重量:entity.weight,价格:entity.price)
如果可以的话,这怎么办?我想你正在寻找这样的东西
func fetchAllFoodProducts() -> [FoodProduct]
{
var foodProducts : [FoodProduct] = []
// Fetch From Realm
let products = realm.objects(FoodEntity.self)
for product in products
{
foodProducts.append(FoodProduct(name: product.name, weight: product.weight, price: product.price))
}
return foodProducts
}
func fetchAllFoodProducts() -> [FoodProduct]
{
var foodProducts : [FoodProduct] = []
// Fetch From Realm
let products = realm.objects(FoodEntity.self)
for product in products
{
foodProducts.append(FoodProduct(entity: product))
}
return foodProducts
}
问题是不可能有一个通用的方法来做到这一点。因为您必须以某种方式分配name
、weight
、price
的值。我想这是你能得到的最接近的了
或者你可以这样做
func fetchAllFoodProducts() -> [FoodProduct]
{
var foodProducts : [FoodProduct] = []
// Fetch From Realm
let products = realm.objects(FoodEntity.self)
for product in products
{
foodProducts.append(FoodProduct(name: product.name, weight: product.weight, price: product.price))
}
return foodProducts
}
func fetchAllFoodProducts() -> [FoodProduct]
{
var foodProducts : [FoodProduct] = []
// Fetch From Realm
let products = realm.objects(FoodEntity.self)
for product in products
{
foodProducts.append(FoodProduct(entity: product))
}
return foodProducts
}
通过稍微改变你的食物属性
struct FoodProduct: Food {
let name: String
let weight: Float
let price: Float
init(entity : FoodEntity)
{
self.name = entity.name
self.weight = entity.weight
self.price = entity.price
}
}
我想你在找这样的东西
func fetchAllFoodProducts() -> [FoodProduct]
{
var foodProducts : [FoodProduct] = []
// Fetch From Realm
let products = realm.objects(FoodEntity.self)
for product in products
{
foodProducts.append(FoodProduct(name: product.name, weight: product.weight, price: product.price))
}
return foodProducts
}
func fetchAllFoodProducts() -> [FoodProduct]
{
var foodProducts : [FoodProduct] = []
// Fetch From Realm
let products = realm.objects(FoodEntity.self)
for product in products
{
foodProducts.append(FoodProduct(entity: product))
}
return foodProducts
}
问题是不可能有一个通用的方法来做到这一点。因为您必须以某种方式分配name
、weight
、price
的值。我想这是你能得到的最接近的了
或者你可以这样做
func fetchAllFoodProducts() -> [FoodProduct]
{
var foodProducts : [FoodProduct] = []
// Fetch From Realm
let products = realm.objects(FoodEntity.self)
for product in products
{
foodProducts.append(FoodProduct(name: product.name, weight: product.weight, price: product.price))
}
return foodProducts
}
func fetchAllFoodProducts() -> [FoodProduct]
{
var foodProducts : [FoodProduct] = []
// Fetch From Realm
let products = realm.objects(FoodEntity.self)
for product in products
{
foodProducts.append(FoodProduct(entity: product))
}
return foodProducts
}
通过稍微改变你的食物属性
struct FoodProduct: Food {
let name: String
let weight: Float
let price: Float
init(entity : FoodEntity)
{
self.name = entity.name
self.weight = entity.weight
self.price = entity.price
}
}
你的问题太令人困惑了。请编辑。这可能有助于开始:你的问题太令人困惑了。请编辑。这可能有助于开始: