我正在使用xcode来编写iOS应用程序。我想在应用中设置一个用户可以留言的部分。对于如何存储特定帖子的评论集,我有点困惑。我基本上只需要为每个评论保存三件事。用户的ID,评论本身和评论的数量(即发布该帖子的第一条评论,或第二,第三等...),但我不知道如何最好地将其实际保存到数据库。我使用parse-server作为主数据库,问题是虽然此数据库可以存储对象的多种质量,但不能保存字典。 (我本来想保存信息为):
期望中的战略(但不工作)如何构建数据以保存用户评论?
var commentCount = 5 //will hold value of number of comments for post
var commentString = "hello"
var commenterID = "e1das312"
var commentSavingDict = [Int: [String]]()
func addComment(){
commentCount = commentCount + 1
commentSavingDict[commentCount] = [commenterID, commentString]
}
的问题是,在解析仪表盘只有阵列可以被保存,而不是词典作为commentSavingDict
是。我认为只是节省了串大抵如此:
第二项策略
var commentCount = 5 //will hold value of number of comments for post
var commentString = "hello"
var commenterID = "e1das312"
var commentSavingArray = [String]()
func addComment(){
commentCount = commentCount + 1
commentSavingArray.append("\(commentCount) :::: \(commentString) :::: \(commenterID)")
}
这种方法是有效的,但需要拉从阵列中的每个条目,然后在::::
与.split
分隔字符串将每个部分倾倒成3个独立的阵列,然后以这种方式利用它们。这需要更长的时间,因为拆分需要客户端。
第三种策略
最后的办法,我设想也只是让每个评论是在数据库中它自己的对象,有四个不同的特质:评论的数量,评论,帖子的ID,和用户的ID。这也会起作用,但它现在使每个评论成为它自己的对象,而不是作为特定帖子的所有评论阵列(作为单个对象),我认为这样做效率低下并且很快就会占用空间。
由于我无法保存字典,有没有比我所建议的更好的方法来解决这个问题?还是我错误地分析了我提出的那些?
感谢您的回复和指南的链接!但是,你能评论我对它的担忧吗?是否通过与其他方法相比增加对象的数量来为每个评论创建单独的对象而不会使数据库停滞不前? –
想想这样 - 你不会创建任何更多或更少的对象,只是因为你每行存储一行而不是一行。它仍然是相同数量的信息。事实上,使用单独的对象可能在数据层面上更有效率,因为这是它期望的结构,并且已经进行了优化。 –