35

我想将一些用户信息作为字符串存储在 iOS 的 Keychain 中,那么 Keychain 中的字符串有长度限制吗?

谢谢。

4

3 回答 3

54

我拼凑了一个 iOS 应用程序,该应用程序将使用该库进行二进制搜索以与钥匙串交互,并确定我最多可以存储一个长度为 16,777,110 的 NS(Mutable)String。因此明显小于其他答案中建议的 NSString 的最大长度或 SQLITE_MAX_LENGTH 的默认值。

编辑:如果您想快速验证此答案,我建议您尝试在钥匙串中存储长度为 16,777,110 的字符串,然后尝试长度为 16,777,111 的字符串。如果第一个有效而第二个无效,则此答案是正确的。

于 2014-06-11T14:32:05.993 回答
17

很难回答 :) 它应该支持NSString的最大长度

所以 Keychain 字符串可以容纳超过42 亿个字符,与NSString相同

于 2012-11-21T08:14:20.817 回答
5

iOS 的钥匙串被实现为 SQLite-database(参见这里的例子)。因此,存储在 SQLite 数据库中的字符串的最大长度可能是钥匙串中字符串的最大长度的上限。

根据sqlite.org上的这个页面,字符串或 BLOB 的最大字节数受预处理器宏SQLITE_MAX_LENGTH的限制,其默认值为10^9。因此,假设字符串为 16 位编码,则字符串的最大长度将是该值的一半。但是,Apple 可能对SQLITE_MAX_LENGTH使用了较低的值。

于 2013-08-10T18:47:14.617 回答