钥匙串中存储的string是否有长度限制?

我想在iOS的钥匙串中存储一些用户信息作为string,那么钥匙串中的string是否有长度限制?

谢谢。

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

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

我扔了一个iOS应用程序,将使用这个库进行二进制search与钥匙串进行交互,并确定我可以存储的最多是一个长度为16,777,110的NS(可变)string。 因此,明显less于NSString的最大长度或其他答案中build议的SQLITE_MAX_LENGTH的默认值。

编辑:如果你正在寻找快速validation这个答案,我会build议尝试存储在钥匙串长度16,777,110string,然后尝试一个长度为16,777,111。 如果第一个工作,第二个不工作,这个答案是正确的。

iOS的钥匙链被实现为SQLite数据库(参见这里举例)。 因此,存储在SQLite数据库中的string的最大长度可以是钥匙串中string的最大长度的上限。

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