【发布时间】:2016-03-21 13:04:48
【问题描述】:
在我们正在制作的应用程序(iOS/Swift、Android)中,我们有一个设置页面,用于当用户想要接收推送通知时。其中一项设置是供用户选择一周中的哪几天。
我的问题是关于如何将此选项存储为一个变量,而不是七个布尔值。该设置将被发送到服务器/数据库进行存储,我想我们可以简单地在数据库中使用单个字节字段。
而不是monday=true, tuesday=false, ...,我想使用例如'10001010',其中1为真,0为假,这将转换为monday=true(1), tuesday=false(0), etc(假设星期一是一周的第一天,它是..)。
这是存储此类数据的有效方式吗?我可以创建一个这样的字节吗?还是使用 string/char[] "10001010" 是一种更常用的做法?或者数据库(例如 MySQL)可以将 bool[] (10001010) 存储为一个字段吗?或者还有其他更好的做法吗? 用于权限的方法也想到了(你知道,777,只是简化了)
当然,有些变体需要服务器对变量使用相同的逻辑,但在这种情况下没问题。
简短的解释,我需要七个布尔值,一个用于一周中的每一天,我想比每天一个变量更有效地存储它。是否有“最佳实践”?
【问题讨论】:
-
考虑
BitSet -
从内存的角度来看,使用 7 个布尔值的字节或位集可能是可行的方法,从维护的角度来看,我可能会使用更容易阅读的东西,例如像
1010000或x-x----这样的字符串。如果数据库列不需要支持的只是基本的 crud 功能(例如,没有排序,这些列上没有连接等),您还可以将设置保存为 JSON 字符串等。 -
“有‘最佳实践’吗?” - 是的。最佳实践是自己了解利弊,并将这些知识应用于问题。最佳做法是不要问是否有“最佳做法”!