Arrays 如何在Swift中合并不同对象的数组
这听起来很简单,但我如何才能在Swift中合并两个不同类型的数组(Simpson&Movie),然后继续按照对象的唯一公共属性(在本例中为“name”)按字母顺序排列对象数组Arrays 如何在Swift中合并不同对象的数组,arrays,swift,higher-order-functions,Arrays,Swift,Higher Order Functions,这听起来很简单,但我如何才能在Swift中合并两个不同类型的数组(Simpson&Movie),然后继续按照对象的唯一公共属性(在本例中为“name”)按字母顺序排列对象数组 struct Simpson { var age: Int var name: String init(age: Int, name: String) { self.age = age self.name = name } } let homer = Simp
struct Simpson {
var age: Int
var name: String
init(age: Int, name: String) {
self.age = age
self.name = name
}
}
let homer = Simpson(age: 39, name: "Homer")
let marge = Simpson(age: 36, name: "Marge")
var simpson = [homer, marge] // [{age 39, name "Homer"}, {age 36, name "Marge"}]
struct Movie {
var location: String
var name: String
init(location: String, name: String) {
self.location = location
self.name = name
}
}
let jaws = Movie(location: "Amity", name: "Jaws")
let et = Movie(location: "LA", name: "E.T")
var movies: [Movie] = [jaws, et] // [{location "Amity", name "Jaws"}, {location "LA", name "E.T"}]
你需要
protocol SharedName {
var name : String {get set}
}
struct Simpson: SharedName {
var name : String = ""
// add other vars
}
struct Movie: SharedName {
var name : String = ""
// add other vars
}
然后创建一个
var arr:[SharedName] = [] // fill in with different objects from Simpson and Movie
arr.sort { $0.name < $1.name }
&
假设您将自动生成所需的文件
protocol SharedName {
var name : String {get set}
}
struct Simpson: SharedName {
var name : String = ""
// add other vars
}
struct Movie: SharedName {
var name : String = ""
// add other vars
}
然后创建一个
var arr:[SharedName] = [] // fill in with different objects from Simpson and Movie
arr.sort { $0.name < $1.name }
&
假设您将自动生成这些答案。在我看来,@Sh_Khan给出的答案比链接问题中被接受的答案更好、更快捷,只需way@Sam,当然,但链接问题中投票最多的答案涵盖了这一点。@vacawama是的,但这不是最好的解决方案(同样,imo)@Sam,Sh_Khan的答案与CodeDifferent的有什么不同?它们都使用协议来统一类型,将公共属性添加到该协议中,创建该协议类型的数组,并根据公共属性对该数组进行排序。@vacawama这是真的,不是。但这并不是通过另一个问题可以看到的答案。@Sh_Khan给出的答案(在我看来)比链接问题中被接受的答案更好,也更快捷,只是通过way@Sam,当然可以,但链接问题中投票最多的答案涵盖了这一点。@vacawama是真的,但这不是最好的解决方案(同样,imo)@Sam,Sh_Khan的答案和CodeDifferent的有什么不同?它们都使用协议来统一类型,将公共属性添加到该协议中,创建该协议类型的数组,并根据公共属性对该数组进行排序。@vacawama这是真的,不是。但这并不是我们可以从另一个问题中看到的答案。