2016-01-28 2 views
0

Я создаю простое приложение Quiz. Я сохранил в файле pList 300 вопросов и один раз показывал вопросы СЛУЧАЙНО.Отображает определенное количество вопросов случайно из файла pList

Теперь, как вы получаете только НЕКОТОРЫЙ НОМЕР вопросов из указанного pList-файла? Например, в файле pList с 300 вопросами я использую все вопросы в одном «go». Тем не менее, есть какой-то «режим практики», где мне нужно получить только 100 вопросов из-за 300-вопроса pList-файла. Как мне это сделать?

Я видел некоторые ресурсы, но все они в Objective-C.

+0

Пожалуйста, включите ваш код, чтобы мы могли видеть, с чем вы столкнулись, и чтобы мы могли более четко проинструктировать вас. – MikeG

+0

Просто перетасуйте свой массив и получите префикс среза массива (n) –

+0

@LeoDabus Как использовать префикс среза массива (n) "? – mjoe7

ответ

0

Вы можете использовать Nate Cook's расширение в случайном порядке из этого answer перетасовать свой массив и выбрать столько элементов, сколько вам нужно от вашего массива, используя префикс массива (п) метод:

extension Array { 
    var shuffled: [Element] { 
     guard count > 1 else { return self } 
     var elements = self 
     for index in indices { 
      let newIndex = Int(arc4random_uniform(UInt32(elements.count - index))) + index 
      guard index != newIndex else { continue } 
      swap(&elements[index], &elements[newIndex]) 
     } 
     return elements 
    } 
} 

Testing:

let questions = Array(1...300).map{"Question \($0)"} 
let shuffledQuestions = questions.shuffled 
let firstOneHundred = shuffledQuestions.prefix(100) // ["Question 163", "Question 77", "Question 262", "Question 292", "Question 229", "Question 199", "Question 93", "Question 35", "Question 19", "Question 65", "Question 107", "Question 142", "Question 174", "Question 172", "Question 240", "Question 131", "Question 274", "Question 252", "Question 214", "Question 285", "Question 185", "Question 219", "Question 51", "Question 267", "Question 170", "Question 6", "Question 55", "Question 67", "Question 115", "Question 148", "Question 137", "Question 139", "Question 116", "Question 259", "Question 24", "Question 283", "Question 273", "Question 147", "Question 17", "Question 16", "Question 97", "Question 2", "Question 74", "Question 215", "Question 184", "Question 84", "Question 247", "Question 73", "Question 37", "Question 7", "Question 226", "Question 1", "Question 173", "Question 238", "Question 46", "Question 108", "Question 114", "Question 119", "Question 251", "Question 197", "Question 159", "Question 72", "Question 70", "Question 150", "Question 289", "Question 143", "Question 141", "Question 47", "Question 69", "Question 88", "Question 244", "Question 189", "Question 129", "Question 266", "Question 221", "Question 248", "Question 92", "Question 236", "Question 33", "Question 175", "Question 133", "Question 210", "Question 228", "Question 213", "Question 64", "Question 223", "Question 198", "Question 202", "Question 68", "Question 291", "Question 230", "Question 270", "Question 103", "Question 83", "Question 271", "Question 62", "Question 109", "Question 121", "Question 10", "Question 232"] 
+0

спасибо, я попробую! – mjoe7