Должен ли я использовать NSUserDefault или CoreData для сохранения последних десяти баллов? - PullRequest
0 голосов
/ 02 января 2019

Прямо сейчас у меня есть struct с несколькими словарями и строкой, которая содержит оценку пользователя для каждого уровня и имя пользователя, которое они вводят.Затем я сохраняю struct баллов в NSUserdefault.

struct Scores: Codable {
    var userName: String = ""
    var totalScore: Int = 0
    var highScore: [String : Int] = [:]
    var scoreA: [String : Int]  = [:]
    var scoreB: [String : Int] = [:]
}

UserDefaults.standard.set(try? PropertyListEncoder().encode(scores), forKey:"scores_1")

. Это хорошо работает, но мне нужно сохранить последние десять баллов пользователя.Мне интересно, следует ли мне использовать core-data или продолжать использовать NSUserdefaults?Не уверен, что лучше всего.

Редактировать: Должен ли я сохранить данные в файл .json?

1 Ответ

0 голосов
/ 02 января 2019

UserDefaults лучше всего использовать для хранения небольших объемов данных, а не массивов.

Каждый раз, когда вы вызываете ключ, файл весь plist, в котором он хранится, вызывается в память.

например)

let volumeLevel = UserDefaults.Standard.integer(forKey: "volume")

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

В приведенном выше примере использование UserDefaults для хранения High Score и UserName - это хорошо, но я бы рекомендовал использоватьCoreData (или что-то еще) для хранения массива, содержащего данные для каждого запуска игры.

...