Подскажите новичку

swift4

#1

Привет! Только начинаю свой путь и не оч понял, как назначать аутлетам цвета и тд. через код?
И второй вопрос:
Чем отличается способы назначение свойств(через точечный индекс, в скобках, или просто присвоить?)

(через точку)
(через присвоить) button.isHidden = true
(через скобки) UIColor.green.withAlphaComponent(0.3)


#2

Это все основы программирования. Вам придется еще почитать, что бы это понять и усвоить.
Про точку не совсем понял, т.к. всегда все вызывается через точку.
Все остальное - это свойства объектов. Некоторый свойства объектов, так же могут являться дочерними объектами и у них так же можно вызвать свойство или метод. Либо для каких-то объектов можно написать расширение, как скорее всего это сделано для цвета withAlphaNumeric().


#4

Подскажите пожалуйста. Есть словарь с массивом значений
let resultGames = [“Салават Юлаев”: [“3:6”, “5:5”], “Авангард”: [“2:1”, “2:3”], “АкБарс”: [“3:3”, “1:2”]]

Не могу понять по чему первый цикл при второй итерации снова повторяет имя nameComand? Он ведь перебирает resultGames?Либо понимаю но туго и не могу обьяснить.

for (nameComand, result) in resultGames {
for oneResult in result {
print(“Игра с (nameComand) - (oneResult)”)
}
}

консоль:
Игра с АкБарс - 3:3
Игра с АкБарс - 1:2 // ?
Игра с Салават Юлаев - 3:6
Игра с Салават Юлаев - 5:5 // ?
Игра с Авангард - 2:1
Игра с Авангард - 2:3 // ?


#5

Все верно выполняется. У вас вывод из консоли не в том порядке вставлен сюда.

Первый цикл по итерациям и сразу второй цикл:
1 - Салават Юлаев
1.1 - 3:6
1.2 - 5:5
2 - Авангард
2.1 - 2:1
2.2 - 2:3
3 - АкБарс
3.1 - 3:3
3.2 - 1:2


#6

Спасибо. Понял, просто внутренний цикл делает 2 итерации для двух значений массива одного ключа.


#7

let array = [“Frodo”, “sam”, “wise”, “gamgee”]

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


#8

Делайте rand от 0 до кол-ва элементов массива - 1, после чего вытаскивайте элемент массива из полученного индекса и кидайте в другой массив.


#9
var arr = [1, 2, 3]
var newArray = [Int]()

let element = arr[Int.random(in: 0..<arr.count)]
newArray.append(element)

arr
newArray

#10

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


#11

Логично, поправил. (…)


#12

Спасибо, а если мне нужно прогнать массив в цикле случайно выбирая из него значение и складывая в другой массив но при этом не удалять эти значения из исходного массива?


#13

используйте функцию map


#14

не, для этих целей forEach, map нужен при трансформации элементов