Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在Swift中合并不同对象的数组_Arrays_Swift_Higher Order Functions - Fatal编程技术网

Arrays 如何在Swift中合并不同对象的数组

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

这听起来很简单,但我如何才能在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 = 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这是真的,不是。但这并不是我们可以从另一个问题中看到的答案。