Для этого вы можете использовать расширение NSArray из каркаса GameplayKit:
import GameplayKit
extension Collection {
func shuffled() -> [Iterator.Element] {
let shuffledArray = (self as? NSArray)?.shuffled()
let outputArray = shuffledArray as? [Iterator.Element]
return outputArray ?? []
}
mutating func shuffle() {
if let selfShuffled = self.shuffled() as? Self {
self = selfShuffled
}
}
}
// Usage example:
var numbers = [1,2,3,4,5]
numbers.shuffle()
print(numbers) // output example: [2, 3, 5, 4, 1]
print([10, "hi", 9.0].shuffled()) // output example: [hi, 10, 9]
Вам необходимо изменить имена внешних файлов, на которые вы ссылаетесь. Например, добавьте номер сборки в конец каждого файла, например style-1423.css, и сделайте нумерацию частью автоматизации сборки, чтобы файлы и ссылки каждый раз развертывались с уникальным именем.
Вместо номера сборки или случайного числа добавьте дату последнего изменения файла к URL-адресу в виде строки запроса программно. Это предотвратит любые несчастные случаи, когда вы забудете изменить строку запроса вручную, и позволит браузеру кэшировать файл, если он не изменился.
Пример вывода может выглядеть следующим образом:
<script src="../../Scripts/site.js?v=20090503114351" type="text/javascript"></script>
Что вы можете сделать, так это вызывать свой JS-файл со случайной строкой каждый раз, когда страница обновить. Таким образом, вы будете уверены, что он всегда свежий.
Вам просто нужно называть его так: «/path/to/your/file.js?[1147645 provided<random-number[1147647 provided>]»
Пример: jquery-min-1.2.6.js? 234266
Поскольку вы упомянули, что жалуются только ваши тестировщики, думали ли вы, что они отключат локальный кеш браузера, чтобы он каждый раз проверял наличие нового контента? Это немного замедлит их браузеры ... но если вы не проводите тестирование удобства использования каждый раз, это, вероятно, намного проще, чем постфиксировать имя файла, добавить параметр строки запроса или изменить заголовки.
Это работает в 90% случаев в наших тестовых средах.
В ссылках на файлы CSS и Javascript добавьте строку запроса версии. Увеличивайте его каждый раз, когда обновляете файл. Это будет игнорироваться веб-сайтом, но веб-браузеры будут рассматривать его как новый ресурс и повторно загружать его.
Например:
<link href="../../Themes/Plain/style.css?v=1" rel="stylesheet" type="text/css" />
<script src="../../Scripts/site.js?v=1" type="text/javascript"></script>
вы можете редактировать http-заголовки файлов, чтобы браузеры повторяли валидацию при каждом запросе