是否有可能有某种类型转换器允许 Sync Framework 将字符串“0”/“1”视为 false/true 的布尔值。根据bool.parse文档,默认情况下不支持它,所以有没有办法解决它?
如果有人可以提出不同的方法来解决此问题,请提供更多详细信息:我有一个针对 android 的自定义 Sync Framework 客户端实现,并且由于它使用 SQLite 数据库,因此我无法对表字段强制执行一些严格的数据类型。我可以想出约定用“Is”前缀来表示布尔字段,但这很讨厌。另一件事是 SQLite 中的布尔值被视为数字类型,因此向 SQLite 数据库插入/更新布尔值 false/true 会自动将它们转换为 0/1,我不想在 android 端引入一些 TRUE/FALSE = 1/0 转换.
欢迎任何想法。
[更新] 更多细节:服务器端包含一些使用 Microsoft Sync Framework 4.0 CTP 的服务。除了创建范围等之外,没有太多要配置的东西。客户端生成变更集并使用 JSON 格式将其传输到服务器。变更集来自 SQLite 数据库(并且 SQLite 除了数字 0/1 之外没有任何本机布尔表示),因此在读取数据库时没有迹象表明即将到来的数据是布尔类型。字段值作为带有数值(“0”或“1”)的字符串序列化为 JSON 对象,因此服务器端在尝试将其解析为布尔值时失败。
顺便说一句,如果进行单向客户端到服务器同步,则可以解决它。我手动将服务器端实体字段类型设置为字节,同步框架很好地将其用作“位”数据库类型。此解决方法不适用于服务器到客户端。