我如何制作两个数组,其中第一个是值,第二个是这些值的键?

时间:2017-10-23 20:38:53

标签: arrays swift

我正在创建两个数组。 第一个包含图像,第二个包含相同数量的数字。 如何使第二个整数数组对应第一个数组,所以每个图片都有一个特定的整数值?

2 个答案:

答案 0 :(得分:0)

在评论之后你可以开始:

class PairedArrays
{
   // instance variables - arrays for the images and values, start of empty
   var images : [NSImage] = []
   var values : [Int] = []

   // add a new image/value pair
   func addPair(image : NSImage, values : Int) -> Void { ... }

   // retrieve integer associated with image
   func getAssociatedInt(key : NSImage) -> Int { ... }
}

现在你需要:

  • 阅读Swift中的课程
  • 填写......
  • 使其成为通用的,因此它适用于图像和整数以外的类型(可选但有用的知识)
  • 使用它作为学习工具尝试使用struct数组,保证图像&值总是成对添加(想想struct PlayingCard { ... }
  • 现在用字典试试
  • 比较最后两个并决定哪个适合您的应用模型

HTH

答案 1 :(得分:0)

像我在评论中所说的那样。您可以应用约定,然后使用Int上的扩展名返回数字描述的图像:

let arrInt = [0, 1, 2, 3] //any number of integers

let cardnames = ["AceOfSpades", "OneOfSpades", "TwoOfSpades"] //etc...


extension Int {
    var cardName : UIImage? {
        guard self <= 51 else { return nil } //because any number greater than this would not represent a card in your 53-card deck
        return UIImage(named: cardNames[self])
    }
}

你基本上将它用作:

func AllImagesInTheDeck() -> [UIImage] {
    var images : [UIImage] = []
    for integer in arrInt {
        if let image = integer.cardName {
            images.append(image)
        }
    }
    return images
}

从那时起,你可以操纵arrInt本身,每个玩家的单个整数数组,并返回他们的卡片图像,你可以调用AllImages方法(这不应该是对性能的重大打击)对于这种情况,数组长度不应该太长。或者,您可以直接从那里操作整数数组,并添加更多方法来确定添加哪些新卡片图像等。如果有任何结构或者必须避免上课,否则如果可以的话,将这种方法与CRD的课堂例子相结合也会很有效。