Подтвердить что ты не робот

Есть ли ограничение длины строки, хранящейся в Keychain?

Я хочу сохранить некоторую userinfo как строку в Keychain на iOS, так есть ли ограничение длины строки в Keychain?

Спасибо.

4b9b3361

Ответ 1

Трудно ответить:) Он должен поддерживать максимальную длину NSString

Таким образом, строка Keychain может содержать несколько символов 4,2 миллиарда, таких как NSString

Ответ 2

Я собрал приложение iOS, которое выполнило бы двоичный поиск, используя эту библиотеку, чтобы взаимодействовать с цепочкой ключей, и определил, что я мог бы максимально использовать хранилище было NS (Mutable) String длиной 16777,110. Значительно меньше, чем максимальная длина NSString или значение по умолчанию SQLITE_MAX_LENGTH, как было предложено в других ответах.

EDIT: Если вы хотите быстро проверить этот ответ, я предлагаю попытаться сохранить String длиной 16,777,110 в цепочке ключей, а затем попробовать один с длиной 16,777,111. Если первый работает, а второй - нет, этот ответ правильный.

Ответ 3

Брелок iOS реализуется как SQLite-база данных (см. здесь). Таким образом, максимальная длина строки, хранящейся в SQLite-базе данных, может быть верхней границей максимальной длины для строки в цепочке ключей.

В соответствии с эта страница на sqlite.org максимальное количество байтов для строки или BLOB ограничено макросом препроцессора SQLITE_MAX_LENGTH, значение которого по умолчанию -значение равно 10 ^ 9. Поэтому, предполагая 16-битовое кодирование строки, максимальная длина строки будет равна половине этого значения. Однако, возможно, Apple использует меньшее значение для SQLITE_MAX_LENGTH.