Iphone 钥匙链中存储的字符串有长度限制吗?

Iphone 钥匙链中存储的字符串有长度限制吗?,iphone,ios,keychain,Iphone,Ios,Keychain,我想在iOS上的Keychain中将一些userinfo存储为字符串,所以Keychain中的字符串有长度限制吗 谢谢。很难回答:)它应该支持 因此,Keychain字符串可以容纳略多于42亿个字符,与iOS的Keychain实现为SQLite数据库(参见示例)相同。因此,存储在SQLite数据库中的字符串的最大长度可能是键链中字符串的最大长度的上限 根据on sqlite.org,字符串或BLOB的最大字节数受预处理器宏sqlite_max_LENGTH的限制,其默认值为10^9。因此,假设对

我想在iOS上的Keychain中将一些userinfo存储为字符串,所以Keychain中的字符串有长度限制吗

谢谢。

很难回答:)它应该支持


因此,Keychain字符串可以容纳略多于42亿个字符,与iOS的Keychain实现为SQLite数据库(参见示例)相同。因此,存储在SQLite数据库中的字符串的最大长度可能是键链中字符串的最大长度的上限


根据on sqlite.org,字符串或BLOB的最大字节数受预处理器宏sqlite_max_LENGTH的限制,其默认值为10^9。因此,假设对字符串进行16位编码,字符串的最大长度将是该值的一半。然而,苹果可能会使用较低的SQLITE_MAX_LENGTH值

我组装了一个iOS应用程序,可以使用与钥匙链交互的方式进行二进制搜索,并确定我最多只能存储长度为16777110的NS(可变)字符串。因此明显小于NSString的最大长度或其他答案中建议的SQLITE_max_length的默认值


编辑:如果您希望快速验证这个答案,我建议您尝试在keychain中存储长度为16777110的字符串,然后尝试长度为16777111的字符串。如果第一个有效,而第二个无效,这个答案是正确的。

这是一个相当大的钥匙链根据,通过实验测试得出一个非常低的极限。那么性能呢?从钥匙链中存储/获取长字符串需要多长时间?顺便说一句,16777110字节~=16MB