我正在使用ActionSheetPicker 3.0(https://github.com/skywinder/ActionSheetPicker-3.0)选择器,并且遇到了一个使用ActionSheetMultipleStringPicker的返回值的新手问题。我已经让控件运行并且可以从中返回值,但我希望能够将选择器的返回值放入单独的变量或者我可以连接在一起的东西。我找到了很多例子,但无法弄清楚如何让它们发挥作用。
我认为通过调试我发现ActionSheetMultipleStringPicker会返回一个Any数组。
调试显示以下内容:
值是吗?一些 payload_data_0 Builtin.RawPointer 0x60800044fdb0 0x000060800044fdb0 - > 0x000000010dacddd8(void *)0x000000010dacdf18:__ NSArrayI payload_data_1 Builtin.RawPointer 0x335392d30 0x0000000335392d30 payload_data_2 Builtin.RawPointer 0x10d28d798 0x000000010d28d798 libobjc.A.dylib`objc_retainAutoreleasedReturnValue + 35 instance_type Builtin.RawPointer 0x60800005d5c8 0x000060800005d5c8
values是选择器的返回值。
我尝试过的几件事情是:
let stringText: String? = String(describing: values)
print(stringText)
打印:
可选("可选(< __ NSArrayI 0x60800044be20>(\ nOne,\ nMany,\ naaa \ n)\ n)")
我也尝试过:
print("\(values as! NSArray)")
这是我最接近我正在寻找的结果:
( 一, 许多, AAA )
任何人都可以提供一些帮助来获得“价值”的价值。我能分成三个不同的字符串变量吗?
我的选择器代码是:
let a = ActionSheetMultipleStringPicker.init(title: "Fertilizer Setup", rows: [
// TODO: Read values from database
["One", "Two", "A lot"],
["Many", "Many more", "Infinite"],
["aaa","sss","ccc","xxxx"]
], initialSelection: [0, 0, 0],
doneBlock: {
picker, indexes, values in
let stringText: String? = String(describing: values)
print(stringText)
print("\(values as! NSArray)")
},
cancel: {ActionMultipleStringCancelBlock in return }, origin: sender)
a?.setCancelButton(UIBarButtonItem(title: "My own title", style: UIBarButtonItemStyle.plain, target: self, action: nil))
a?.show()
答案 0 :(得分:0)
我能够弄清楚这一点。我将doneBlock代码更改为:
doneBlock: {
picker, indexes, values in
let fertilzerPicker: NSArray = values as! NSArray
self.row.value!.name = fertilzerPicker[0] as! String
self.row.value!.amount = fertilzerPicker[1] as! Int
self.row.value!.unitOfMeasurement = fertilzerPicker[2] as! String
}
关键是:
let fertilzerPicker: NSArray = values as! NSArray
创建fertilzerPicker允许我获取数组的各个元素。