【问题标题】:How is my array count 0?我的数组计数如何为 0?
【发布时间】:2015-02-23 06:25:25
【问题描述】:

我有一个 UIPickerView。在我的代码解析 XML 请求之前,我设置了一个空白数组。所以当它发生时,我希望它用该数据填充数组。以下是我如何设置所有内容。

var pickerData = []

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return pickerData.count
    }

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
        return pickerData[row] as String
    }

func parser(parser: NSXMLParser!, foundCharacters string: String!) {
        if (seperatedSoap == "pickerDataString") {
            if (currentElementName == "name") {
                pickerData = [string]
                println(pickerData)
            }

        }

我显然没有粘贴所有代码,但您应该能够理解这里发生了什么。现在我的控制台在解析后将其打印为我的 pickerData。

(
    "2x1 on recv-small"
)
(
    "2x1 on ship-small"
)
(
    "3x2 on avs-1"
)
(
    "2.25x2 on photo-large"
)
(
    "2.25x2 on recv-large"
)
(
    "2.25x2 on repair-large"
)
(
    "2x3 on wireless-1"
)
(
    "4x6 on ship-shiplbl"
)
(
    "4x6 on recv-shiplbl"
)
(
    "4x6 on wireless-shiplbl"
)

这正是我想要的,但它没有出现在我的 UIPickerView 中,因为它显然是空白的?我在这里做错了什么?

【问题讨论】:

  • 您必须使用 append 将元素添加到您的数组中,而不是等号
  • Cross-posting :-) 我在回答中也提到了这一点,但现在我认为计数最终应该是 1 而不是 0 :-?
  • 我把这个留给你了
  • @TomasKilian 的回答解决了您当前的问题。但你也应该参考这个问题:stackoverflow.com/a/28217011/3804019

标签: arrays swift nsarray uipickerview nsxmlparser


【解决方案1】:

首先你应该使用

pickerData.append(string)

因为您的分配将始终将数组设置为包含单个(最后一个)元素。

那你可能需要致电reloadComponent

【讨论】:

  • 不敢相信我忘记了!好久不见了哈哈,你真棒!我还将我的数组更改为只接受字符串。 var pickerData = [字符串]()
【解决方案2】:

追加数组加法赋值运算符(+=):

pickerData += [string]

Swift Collection Types

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2012-02-18
    • 2010-11-28
    • 1970-01-01
    相关资源
    最近更新 更多