【问题标题】:Create a multi dimensional array in swift and use the data to populate 3 tableviews快速创建一个多维数组并使用数据填充 3 个表视图
【发布时间】:2016-08-29 16:33:09
【问题描述】:

感谢您花时间阅读我的问题。 我有使用多维数组的 php 经验,但我正在努力将我的知识转移到 swift...

计划是这样创建一个数组:

类别 1 -- 产品1 - - 描述 -- 产品2 --- 描述

类别 2 -- 产品1 - - 描述 -- 产品2 --- 描述

类别 3 -- 产品1 - - 描述 -- 产品2 --- 描述

并使用 3 个表视图(每个视图控制器上 1 个)我想填充信息:

Tableview1 -- 类别列表。 Tableview2 -- 所选类别列表的产品。 Tableview3 -- 选择的描述。

我可以使用简单的数组轻松填充 1 个表格视图,但我将如何:

1) 创建多维数组? 2)计数并填充每个表视图? 3) 将每个子行绑定到父行?

我真的希望我是有道理的,我不是在寻找搭便车,只是帮手,因为我真的很喜欢学习 swift 语言!

亲切的问候 罗里

【问题讨论】:

    标签: arrays xcode swift uitableview multidimensional-array


    【解决方案1】:

    欢迎来到 swift user1263909

    如何创建字符串数组

    let stringArray = [String]()
    

    如何用字符串字面量创建一个字符串数组

    let categoryStringArray = ["Category1", "Catagory2", "Catagory3"]
    

    如何创建字符串数组的数组

    let arrayOfArray = [[String]]()
    

    如何创建字符串数组字面量数组

    let a = [["Category1", "Catagory2", "Catagory3"],["product1", "product2", "product3"]]
    

    访问“Catagory3”

    a[0][2]
    

    然而,这一切都会很快变得复杂。为什么不使用一些结构?

    struct Product {
        var name:String
        var description:String
        var price:Double
        //ect...
    }
    

    使用struct封装数据,方便使用

    let p1 = Product(name: "hat", description: "a hat", price: 2.00)
    

    让我们创建一个结构数组。

    let arrOfProduct = [p1,Product(name: "tie", description: "a bow tie", price: 5.00)]
    

    arrOfProduct 现在有两个结构,一个 tie 和一个 hat。 如何获取帽子的价格

    arrOfProduct[0].price
    

    哦,我们也可以有一个用于分类的结构,它可以包含产品作为一个数组

    struct Category {
        var name:String
        var products:[Product]
    }
    

    让我们为衣服创建一个类别。

    let clothes = Category(name: "Clothing", products: arrOfProduct)
    

    让我们创建另一个类别

    let food = Category(name: "Food", products: [Product(name: "Candy", description: "Yummy Candy", price: 2.0)])
    

    最后我们可以有一个类别数组

    let arrC = [clothes,food]
    

    现在我可以遍历第一个表格视图中的所有类别来填写单元格名称

    for c in arrC{
        print(c.name)
    }
    

    当您切换到新的视图控制器时,将正确的产品数组传递给它

    let productsClicked = arrC[0].products
    

    然后在新的视图控制器上循环产品

    for p in productsClicked{
        print(p.name)
    }
    

    如果他们单击产品,则将产品传递给下一个视图控制器,依此类推。 当您有新的需求时,这将更容易维护。

    祝你好运,欢迎来到斯威夫特。 :D

    【讨论】:

    • 如果这是一个很好的答案并且对您的问题有所帮助,请将其标记为已接受的答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-10-28
    • 2014-09-02
    • 2017-03-22
    • 2019-04-13
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    相关资源
    最近更新 更多