2016-08-12 5 views
1

나는 mealTitles 속성을 가진 내가 만든 식사 개체의 배열 (현재 5 개)을 무작위로 추출하려고합니다. 이 같은 셔플 경우에내 대상 위치가 무작위로 표시되지만 나타나지 않는 이유는 무엇입니까?

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 
} 

내가 셔플 버튼을 사용하여 찾습니다 : 나는 코드를 사용하여, randomise 눌러

이 코드는 콘솔이에서 생산
@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

셔플 메서드는 이전 배열의 셔플 된 버전 인 새 배열을 반환하지만 코드에서 그 반환 값을 사용하여 아무 것도 수행하지 않습니다. 속성에 셔플 된 배열을 지정해야합니다.

myMeals = shuffleArray(array: myMeals) 
+0

정말 고마워요! 그런 어리석은 실수 –