Вы можете проверить, что полученные скалярные значения, такие как целые числа и числа с плавающей точкой, находятся в пределах диапазонов, которые имеют смысл для вашей игры.Например, если ваша игра закодирована таким образом, что максимальный достижимый счет составляет 100 единиц, вы должны отбросить полученный скаляр, представляющий счет, превышающий максимальный.
Для строк следует проверить, что их длина является разумнойНапример, строка для имени игрока должна быть не более 50 символов.Если вы используете строки с каким-то определенным форматом, например @"kMyGameHighScoreKey"
, вам следует проверить, соответствует ли полученная строка этому формату.
Общая идея заключается в том, что вы проверяете, что то, что вы получаете, - это только то, что делаетсмысл вашей игры и ничего более.В любом другом случае вам следует отказаться от полученных данных.
Если я правильно понимаю, в вашем случае вы получаете только строку, которую затем используете в качестве ключа для чтения некоторых данных из локального хранилища.Вы должны проверить, что полученная строка действительно является одним из ожидаемых ключей, прежде чем использовать ее с методом decodeObjectForKey:
.Не используйте слепо (преобразованный) аргумент NSData*
didReceiveData:
в качестве ключа в decodeObjectForKey:
.