gpt4 book ai didi

ios - 如何在 Swift 中使用 3d 数组作为 UICollectionView 的数据源?

转载 作者:行者123 更新时间:2023-11-28 07:10:09 24 4
gpt4 key购买 nike

我有一个数据源,它是一个三维数组。

我使用第一个维度计数作为部分数。

我使用三维作为每个部分中的项目。

这是一些示例数据:

let sentence1 = [word1, word2, word1] // These are Word objects
let sentence2 = [word1, word2, word3] // in my model.
let sentence3 = [word4, word5, word3]

let paragraph1 = [sentence1, sentence2] // These are Sentence objects.
let paragraph2 = [sentence1, sentence3]

let article = [paragraph1, paragraph2]

目前我刚刚制作了一个 3dArray 的副本,并将第二维和第三维展平为一维,从而使三维数组成为二维数组。然后我将 new2dArray.count 作为 numberOfSectionsInCollectionView 返回,并在 cellForItemAtIndexPath 中使用如下内容制作单元格:

let cell: UICollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as UICollectionViewCell

let cellLabel = new2dArray[indexPath.section][indexPath.row]

但是,在我的 didSelectItemAtIndexPath 中,我需要访问 3dArray 的第二维。我正在寻找这样的东西:

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
println("did select cell \(indexPath.row) inside of \(secondDimension) inside of \(indexPath.section)")

我需要做什么?

最佳答案

我是这样解决这个问题的:

  1. 部分展平 3d 数组,使其成为可用作 Collection View 数据源的 2d 数组。
  2. 找出 twoDimensionalArray[indexPath.section][indexPath.row] 的索引,如果该数组也被展平。 ( https://stackoverflow.com/a/28742108/538034 )
  3. 计算 threeDimensionalArray 中的元素数量,然后像这样保存各个索引:

    func find3dIndex(article: Array<Array<Array<String>>>, flatWordIndex: Int) -> (Int, Int, Int) {
    var fullSentenceArray = [String]()
    var counter = 0

    for index in 0...flatWordIndex {
    for (paragraphIndex, paragraph) in enumerate(article) {
    for (sentenceIndex, sentence) in enumerate(paragraph) {
    for (wordIndex,word) in enumerate(sentence) {
    if counter == flatWordIndex {
    println("tuple: \(paragraphIndex), \(sentenceIndex), \(wordIndex)")
    return (paragraphIndex, sentenceIndex, wordIndex)
    break
    }
    counter += 1
    }
    }
    }
    }
    return (99,99,99)
    }

关于ios - 如何在 Swift 中使用 3d 数组作为 UICollectionView 的数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28694113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com