Swift 4 initWithObject 等效
Swift 4 initWithObject equivalent
Swift 的新手。我有一段 Objective-C 代码,看起来像这样:
self.imageArray = [[NSMutableArray alloc] initWithObjects:@{@"name":@"James",@"image":@"1.jpg",@"Address":@"xyz"},
@{@"name":@"Doe",@"image":@"2.jpg",@"Address":@"xyz"},nil];
如何使用与 Swift 相同的 initWithObjects
函数。我在网上看到我们需要创建一个 extension
然后使用 zip
函数。但是从文档看来,zip 函数似乎只需要 2 个序列。我的 imageArray 具有由 3 个不同的 keys/values.
组成的字典对象
我尝试了以下方法,但不确定如何将值分配给相应的键:
extension Dictionary{
for (name, address, image) in zip(names, address, images) {
self[name] = names
}
}
在 Swift 中,我们可能会使用原生 Array
(用 [
和 ]
指定)而不是 NSMutableArray
对象。 Swift 等同于您的代码片段是使用 Swift Array
个 Dictionary
个对象:
var imageArray: [[String: String]]?
然后:
imageArray = [["name": "James", "image": "1.jpg", "Address": "xyz"],
["name": "Doe", "image": "2.jpg", "Address": "xyz"]]
话虽如此,您可能想要使用自定义对象类型:
struct PersonImage {
let name: String
let image: String
let address: String
}
然后定义imageArray
为PersonImage
:
的数组
var imageArray: [PersonImage]?
然后
imageArray = [PersonImage(name: "James", image: "1.jpg", address: "xyz"),
PersonImage(name: "Doe", image: "2.jpg", address: "xyz")]
Swift 的新手。我有一段 Objective-C 代码,看起来像这样:
self.imageArray = [[NSMutableArray alloc] initWithObjects:@{@"name":@"James",@"image":@"1.jpg",@"Address":@"xyz"},
@{@"name":@"Doe",@"image":@"2.jpg",@"Address":@"xyz"},nil];
如何使用与 Swift 相同的 initWithObjects
函数。我在网上看到我们需要创建一个 extension
然后使用 zip
函数。但是从文档看来,zip 函数似乎只需要 2 个序列。我的 imageArray 具有由 3 个不同的 keys/values.
我尝试了以下方法,但不确定如何将值分配给相应的键:
extension Dictionary{
for (name, address, image) in zip(names, address, images) {
self[name] = names
}
}
在 Swift 中,我们可能会使用原生 Array
(用 [
和 ]
指定)而不是 NSMutableArray
对象。 Swift 等同于您的代码片段是使用 Swift Array
个 Dictionary
个对象:
var imageArray: [[String: String]]?
然后:
imageArray = [["name": "James", "image": "1.jpg", "Address": "xyz"],
["name": "Doe", "image": "2.jpg", "Address": "xyz"]]
话虽如此,您可能想要使用自定义对象类型:
struct PersonImage {
let name: String
let image: String
let address: String
}
然后定义imageArray
为PersonImage
:
var imageArray: [PersonImage]?
然后
imageArray = [PersonImage(name: "James", image: "1.jpg", address: "xyz"),
PersonImage(name: "Doe", image: "2.jpg", address: "xyz")]