【问题标题】:Swift 4.2 parse json to use it on UIPickerviewSwift 4.2 解析 json 以在 UIPickerview 上使用它
【发布时间】:2019-06-01 13:43:15
【问题描述】:

我想使用 json 来显示一个带有 json 字段的选择器视图

data = {
        account = {
             id=0;
             accountNumber:534534535;
             institution:"bank1";
             balance:800.3;
          };
        account = {
                 id=1;
                 accountNumber:8353454535;
                 institution:"bank2";
                 balance:1200.87;
              }
        account = {
                 id=2;
                 accountNumber:31231231;
                 institution:"bank3";
                 balance:150.3;
              }
    };

对于我尝试过的帐户的 json

var accounts:[AccountResponse] = []

let jsonAccounts = response["data"]
                let userAccounts = jsonAccounts["accounts"]
                for acc in userAccounts{
                    accounts = AccountResponse(accountResponse: acc)//doesn't work
                }

不知道如何将其作为数组设置在 UIPickerView 上,想显示 bank1,bank2,bank3

func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return accounts.count
    }
    func pickerView(pickerView: UIPickerView, titleForRow row: Int) -> String? {
        return accounts[row]
    }

Main.storyboard

目的是允许用户选择名称并在 texview 上显示余额,我也希望将 id 存储在变量中

我真的是 swift 的新手,以前我正在使用一项服务,它返回 json,然后有人帮助我处理依赖 SwiftyJSON。我用它来获取用户信息。

data =     {
    email = "vpozo@email.com";
    fullName = "Victor Pozo";
    id = 6;
    phoneNumber = 099963212;
    token = 6;
};

现在我可以使用它作为对象了

      let userJson = response["data"]
      let user = UserResponse(userResponse:userJson)

【问题讨论】:

  • 除了 JSON 不是 JSON 之外,键 data 的值无效,因为字典(不,它不是数组)必须具有唯一键。并且鼓励您使用内置的Codable(完全没有依赖关系)并删除 SwiftyJSON
  • @vadian 这个依赖帮助我获得了信息,Codable 没有,但主要问题是我想在 pickerView 上使用 JSON,这就是我创建这篇文章的原因。

标签: arrays json swift uipickerview swifty-json


【解决方案1】:

您目前没有在任何地方保存帐户。

accounts = AccountResponse(accountResponse: acc)

应该是这样的

accounts.append(AccountResponse(accountResponse: acc))

【讨论】:

  • 已经试过了,但是消息:'Cannot convert value of type '(String, JSON)' to expected argument type 'JSON'' 但真正的问题是如何在pickerview上使用它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多