2016-08-12 9 views
1

Я пытаюсь рандомизировать набор блюд (в настоящее время 5) такой массив предметов еды, которые я создал, которые имеют свойство mealTitles. Жму рандомизации, используя код:Почему мои объекты рандомизированы, но не отображаются?

func shuffleArray<T>(array: Array<T>) -> Array<T> 
{ 
    var array = array 
    for index in ((0 + 1)...array.count - 1).reversed() 
    { 
     // Random int from 0 to index-1 
     let j = Int(arc4random_uniform(UInt32(index-1))) 

     // Swap two array elements 
     // Notice '&' required as swap uses 'inout' parameters 
     swap(&array[index], &array[j]) 
    } 

    return array 
} 

я использую кнопку воспроизведения в случайном порядке и посмотреть, если он перетасовки такой:

@IBAction func shuffleButton(_ sender: AnyObject) { 
    shuffleArray(array: myMeals) 
    print("Objects: \(shuffleArray(array: myMeals))") 
    print(myMeals[0].mealTitle, myMeals[1].mealTitle, myMeals[2].mealTitle) 
} 

Этот код создает в консоли следующее:

Objects: [<ParseStarterProject_Swift.Meal: 0x6080002747c0>, <ParseStarterProject_Swift.Meal: 0x60800026ea40>, <ParseStarterProject_Swift.Meal: 0x60000027b400>, <ParseStarterProject_Swift.Meal: 0x60000026d980>, <ParseStarterProject_Swift.Meal: 0x608000267d80>] 
Sausages and Mash Chicken Korma Fajitas 
Objects: [<ParseStarterProject_Swift.Meal: 0x60000027b400>, <ParseStarterProject_Swift.Meal: 0x60800026ea40>, <ParseStarterProject_Swift.Meal: 0x60000026d980>, <ParseStarterProject_Swift.Meal: 0x6080002747c0>, <ParseStarterProject_Swift.Meal: 0x608000267d80>] 
Sausages and Mash Chicken Korma Fajitas 

Т.е. похоже, что место меняется, но название еды остается неизменным.

Любая помощь будет высоко оценена.

ответ

2

Ваш метод shuffle возвращает новый массив, который является перетасованной версией старого массива, но вы ничего не делаете с этим возвращаемым значением в вашем коде. Вам нужно назначить перетасованный массив вашему свойству.

myMeals = shuffleArray(array: myMeals) 
+0

Большое вам спасибо! Такая глупая ошибка –