【问题标题】:How can I associate a string with a particular array?如何将字符串与特定数组关联?
【发布时间】:2016-01-18 12:16:14
【问题描述】:

我需要检查一系列数组中的某个值,然后如果该值在范围内,则为通过检查的每个数组附加一个字符串数组,并为其命名。例如,在下面的代码中,我希望将“First Array”附加到 lensLibrary,因为它包含 spherePower。

如何将字符串与每个数组关联起来,用作显示给用户的名称?我尝试了一个开关,对作为参数传递的每个数组使用不同的大小写,但失败了,if 语句也是如此。

let arrayA : [Float] = [1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0]  // "First Aray"

let arrayB : [Float] = [5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5]  // "Second Array"

var lensLibrary : [String] = []


func arrayContains(array: [Float], powerD : Float) {

    var lensName : String!

    if array.minElement() < powerD && powerD < array.maxElement() {

        lensLibrary.append( /* Name of Array that was checked  */  )

    }


 override func viewDidLoad() {

    super.viewDidLoad()

    spherePower = 4.5

    // Check if spherePower is in each array, and add the name of the array to lensLibrary if it is present
    arrayContains(arrayA, powerD: spherePower)
    arrayContains(arrayB, powerD: spherePower)

    }

【问题讨论】:

  • 你的问题毫无意义。 lensLibrary不能加“数组名”; lensLibrary 是浮点数数组,而不是名称数组。您不能将字符串(如“FirstArray”)插入浮点数组。为什么你甚至想要?用户怎么会知道这些名字?
  • 另外,您的代码绝不会查看 powerD 是否在 数组中。我希望你不这么认为。它没有。
  • 抱歉,float 类型在复制代码时出错,它是简化的,不是复制和粘贴的。至于检查,是的,我知道,正如所写,它只检查范围。我有另一个函数来检查它是否真的在数组中,但为了简单起见,我省略了它。我要做的是创建一个字符串数组,其中仅包含通过检查的数组的“名称”。我要问的是,如何为每个数组分配一个名称,以便当一个数组通过检查时,它的名称可以附加到 lensLibrary 并显示给用户?
  • 嗯,它没有名字。 cmets 后面的字符串只是您正在制作的 cmets;它们不是程序本身的东西。将字符串名称与对象关联的常用方法是字典:键是名称,值是对象。因此,您可以从 [String : [Float]] 的字典开始 - 键是字符串(名称),值是浮点数组(例如您的 arrayAarrayB)。

标签: arrays string swift append


【解决方案1】:

我会从[String : [Float]] 的字典开始。字符串键是名称; [Float] 是浮点数组。您的字典有两个条目。根本没有arrayAarrayB;只是字典。在viewDidLoad 中,循环浏览字典的键值对。对于每一个键值对,如果值(数组)包含所求的幂,则将键放入名称数组中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    相关资源
    最近更新 更多