0

我正在使用 ActionSheetPicker 3.0 ( https://github.com/skywinder/ActionSheetPicker-3.0 ) 选择器,并且遇到了处理来自 ActionSheetMultipleStringPicker 的返回值的新手问题。我已经让控件运行并且可以从中返回值,但我希望能够将选择器的返回值放入单独的变量中或放入我可以连接在一起的东西中。我找到了很多例子,但不知道如何让它们工作。

我想我通过调试发现的是 ActionSheetMultipleStringPicker 返回了一个 Any? 数组。

调试显示如下:

价值观 任何?some 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>(\n一个,\n许多,\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()
4

1 回答 1

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 允许我获取数组的各个元素。

于 2017-07-07T18:51:38.323 回答