Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.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
Ios 在swift中初始化视图数组的最佳方法?_Ios_Arrays_Swift_Uikit - Fatal编程技术网

Ios 在swift中初始化视图数组的最佳方法?

Ios 在swift中初始化视图数组的最佳方法?,ios,arrays,swift,uikit,Ios,Arrays,Swift,Uikit,我正在使用swift编写UIView的一个新子类。我想要一个视图数组,为了清晰起见,我想在初始声明中实例化它们 如果这是一个Int数组,我可以这样做: let values: [Int] = (0...4).map() { $0 } var buttons = (0...4).map() {_ in UIButton.buttonWithType(.Custom) } 因此,我试图提出一种类似的快速单行程序,它将创建一个UIButton数组,而不是INT 我的第一个想法是(0…4).map(

我正在使用swift编写UIView的一个新子类。我想要一个视图数组,为了清晰起见,我想在初始声明中实例化它们

如果这是一个Int数组,我可以这样做:

let values: [Int] = (0...4).map() { $0 }
var buttons = (0...4).map() {_ in UIButton.buttonWithType(.Custom) }
因此,我试图提出一种类似的快速单行程序,它将创建一个UIButton数组,而不是INT

我的第一个想法是
(0…4).map(){UIButton.buttonWithType(.Custom)}
但是如果我这样做(或者如果我用NSObject()替换UIButton代码),我会得到一个错误,说“'Transition'没有名为'map'的成员”。比如说,我可以执行
map(){“\($0)”}
并获取字符串数组

我的下一个想法是首先获取一个int数组,然后在这些数组上使用map返回按钮,如:

let values: [UIButton] = (0...4)
    .map() { $0 }
    .map() { UIButton.buttonWithType(.Custom) }

但这给了我同样的错误。我做错了什么,这里?

好吧,我很快找到了解决方案:我想我不能悄悄地忽略传递给map函数的闭包变量;我需要明确地忽略它。因此,要获得4个按钮的数组,我可以在map函数中使用u,如下所示:

let values: [Int] = (0...4).map() { $0 }
var buttons = (0...4).map() {_ in UIButton.buttonWithType(.Custom) }
或者我最终使用的是:

lazy var buttons: [UIButton] = (0...4).map() { _ in
    let button = UIButton.buttonWithType(.Custom) as UIButton
    self.addSubview(button)
    return button
}

你觉得这是你编写代码的最清晰的方式吗?或者也许是最“可爱”的方式。对未来的读者来说,清晰是最大的胜利。Brian Kernighan:“如果您在编写它时尽可能地聪明,那么您将如何调试它?”我特意在(可选)[UIButton]类型注释中留下,以明确这将生成一个UIButton数组。很明显,我们仍在寻找写Swift的最佳实践,但我认为,一旦你看过这篇文章,事后就不会觉得太疯狂了吧?