在 iOS 中创建 2D SwiftyJSON 数组

Posted

技术标签:

【中文标题】在 iOS 中创建 2D SwiftyJSON 数组【英文标题】:Creating 2D SwiftyJSON Array in iOS 【发布时间】:2017-02-27 18:40:29 【问题描述】:

我正在创建一个自定义 ios 键盘并尝试创建一个函数,该函数将使用 JSON 字典来查看要使用的符号。

这是我的功能:

func switchSymbols(option: Int) 
    for view in self.view.subviews 
        if let button = view as? UIButton 
            let buttonTag = button.tag
            if (buttonTag > 0 && buttonTag < 100) 
                if let text = symbolsDict?[buttonTag][option].stringValue 
                    print(symbolsDict)
                    button.setTitle(text, for: .normal)
                
            
        
    

这里是创建查找字典的工厂函数:

func symbolsDictFactory() -> JSON 
    var dict:JSON = [:]

    dict[1][0] = "1"
    dict[1][1] = "["
    dict[2][0] = "2"
    dict[2][1] = "]"

    print(dict)

    return dict

不幸的是,第二个函数生成了一个空白 JSON 数组。

有点失落。任何帮助表示赞赏。提前致谢。

【问题讨论】:

失败是什么意思??崩溃、错误、警告,这是怎么回事?? 更新了描述错误的答案。 我选择 JSON 是因为使用它更容易创建字典。而且我认为字典很适合这种查找表。请您举例说明模型对象、结构或类如何更好地适应这种情况。 【参考方案1】:

我建议不要将 JSON 用于应用程序中的数据和模型。你的内部模型应该是强类型的。

事实上,JSON 是真正的[String: Any] 类型,这不是你需要的,因为按钮标签和选项值都是整数。您在代码中描述的是[Int: [Int: String]]。创建一个函数来返回您的符号查找表没有任何问题。但是,由于表是常量,因此像这样将其设置为包含类的属性可能会更简单。

class View: UIViewController 
  private let titleForButton = [
    1: [0: "1",   1: "["],
    2: [0: "2",   1: "]"],
    //  ...
    99: [0: "?", 1: "?"]
  ]

  func switchSymbols(option: Int) 
    for view in self.view.subviews 
      if let button = view as? UIButton 
        if let title = titleForButton[button.tag]?[option] 
          button.setTitle(title, for: .normal)
        
      
    
  

此外,您对 button.tag 在 [1..

【讨论】:

以上是关于在 iOS 中创建 2D SwiftyJSON 数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ios 中创建嵌套字典结构?

在 Go 中创建 2D 切片的简洁方法是啥?

在 Gamemaker 标准 v1.4 中,是不是可以在 2D 中创建 Bridge Builder 物理和关节?

如何在 Qt 中创建 3D 对象模型的 2D 切片?

如何在 C++ 中从现有 2D 向量中创建具有特定列的新向量

如何在 java 中创建一个 2D ArrayList? [复制]