2017-08-14 24 views
2

私はxcodeを使ってiOSアプリケーションをプログラミングしています。私は、ユーザーがコメントを残すことができるアプリケーションのセクションを設定したいと思います。私はちょっと私が特定の投稿のためのコメントのセットを保存する方法について混乱しています。私は基本的にコメントごとに3つだけを保存する必要があります。ユーザーのID、コメントそのもの、コメントの数(つまり、その投稿、2番目、3番目などの投稿の最初のコメント)が実際にデータベースに保存するにはどうすればいいのか分かりません。私はプライマリデータベースとして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つの別々の配列にダンプし、それをそのまま利用します。分割がクライアント側である必要があるため、これは少し時間がかかります。

第三の戦略
私はちょうど4つの異なる品質で、各コメントは、データベース内の独自のオブジェクトである持っているだろう考え、最終的な方法:コメントの数、コメント、投稿のID、およびユーザーのID。これも機能しますが、個々の投稿のためのすべてのコメント(1つのオブジェクトとして)の配列に保持されるのではなく、それぞれのコメントを独自のオブジェクトにしています。

私は辞書を保存することができないので、私が提案したよりも、この問題に対するより良いアプローチがありますか?あるいは私が提案したものを間違って分析していますか?

答えて

1

あなたの3番目の戦略は行く方法です。実際には、Parse iOS Developer's Guideには非常によく知られている例があります。各コメントは、ポインタによって元の投稿にリンクされています。これは、投稿のコメントを取得するときに追加のフェッチを行いますが、コメントオブジェクトを投稿自体の配列カラムの中に入れようとするよりはるかに拡張性があります。配列の列は、より一般的には、より小さくて簡単なコレクションに役立ちます。

これは、大したケースの制限がないわけではありません。たとえば、タイムライン上の投稿のコメント数を表示する場合は、画面上のすべての投稿のコメントをすべて取得する必要があります。これに対する通常の解決策は、投稿自体にカウンタを保存し、コメントが追加/削除されたとき(理想的にはCloud CodeのafterSaveトリガー経由)にカウンタを更新することです。

もう1つのメモ - 「コメント番号」の保存を避け、コメントcreatedAtの日付に依存する可能性があります。投稿をフィルタリングし、作成日順にソートすることでコメントを取得できます。

+0

応答とガイドへのリンクありがとう!あなたはそれについて私の懸念についてコメントすることはできますか?各コメントの個々のオブジェクトを作成しても、他のメソッドと比較してオブジェクトの量を増やすことでデータベースを壊すことはありませんか? –

+1

このように考えると、行ごとに1つvsすべてを1つの行に格納するだけなので、それ以上オブジェクトを作成する必要はありません。それでも情報量は同じです。実際、別個のオブジェクトを使用することは、データレベルではるかに効率的になる可能性があります。これは、これが期待している構造であり、最適化されているためです。 –