2015-10-20 3 views
-2

Мне нужно проверить ряд массивов на значение, а затем, если значение находится в пределах диапазона, добавьте массив строк с именем для каждого массива, который проходит проверку. Например, в приведенном ниже коде я хотел бы добавить «First Array» к объектной библиотеке, поскольку он содержит сферу.Как связать строку с определенным массивом?

Как связать строку с каждым массивом, который будет использоваться как имя для отображения пользователю? Я попробовал коммутатор, используя другой случай для каждого массива, переданного как аргумент, но это не удалось, как и в случае с операторами.

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) 

    } 
+0

Ваш вопрос не имеет смысла. Вы не можете добавить «имя массива» в 'lensLibrary'; 'lensLibrary' - это массив Floats, а не массив имен. Вы не можете вставить String (например, «FirstArray») в массив Floats. И почему ты хочешь этого? Как бы пользователь знал об этих именах? – matt

+0

Кроме того, ваш код никак не показывает, является ли 'powerD' _in_ массивом. Надеюсь, вы не думаете, что это так. Это не так. – matt

+0

Мои извинения, тип float был ошибкой в ​​копировании кода, он упрощен и не скопирован и вставлен. Что касается проверки, да, я знаю, что, как написано, он проверяет только диапазон. У меня есть еще одна функция, которая проверяет, действительно ли она находится в массиве, но я пропустил ее для простоты. То, что я пытаюсь сделать, это создать массив строк, который будет содержать только «имена» массивов, которые проходят проверку. Я спрашиваю, как мне назначить имя для каждого массива, так что, когда массив проходит проверку (-ы), это имя может быть добавлено в lensLibrary и отображено пользователю? – NoClue

ответ

1

Что я хотел бы сделать, это начать с Словаре [String : [Float]]. Строковый ключ - это имя; [Float] - это массив с плавающей точкой. Ваш словарь содержит две записи. Больше нет arrayA и arrayB; просто словарь. В viewDidLoad цикл через пары ключ-значение словаря. Для каждой пары ключ-значение, если значение (массив) содержит искомую мощность, поместите ключ в массив имен.

Смежные вопросы