2016-10-14 10 views
0

私はSwift 3とFirebaseを使用しています。最後のX日間のすべての投稿をフィードに読み込もうとしています。すべての投稿を検索せずにこれを行う方法は何ですか?Firebase X日前のデータをロードする

私は

ref.queryOrdered(byChild: "createdAt").queryStarting(atValue: dateInPast) 

をやってみましたが、それはATVALUE(私は.queryStartingの日付パラメータを設定できません:)

エラーメッセージ:

がキャッチされないのためにアプリを終了例外 'InvalidQueryParameter'、理由: 'nil、NSStringまたはNSNumberをqueryStartingAtValueに渡すことができます:'

データ構造:

{ 
    "createdAt": "20161013134743", 
    "imageURL": "", 
    "latitude": 44.43127318210377, 
    "longitude": 26.07118959027369, 
    "objectId": "-KTyI60jaUUuRBj-sIRR", 
    "ownerId": "TlQZr5cqSIUboBO8k3bjz3q6oj63", 
    "postText": "Bravo sefu' la Moose!", 
    "replies": 4, 
    "reportCount": 0, 
    "score": 5, 
    "updatedAt": "20161013134743" 
} 
+1

は、あなたのデータ構造のような(してください、なしスクリーンショットテキストとして)に見えるかを示すことはできますか?また、あなたがそれを許さないということは何を意味しますか?エラーメッセージはありますか? –

+0

はい、エラーメッセージがある:「InvalidQueryParameter」キャッチされない例外によりにアプリを終了理由:「あなたは唯一queryStartingAtValueにゼロ、NSStringのかのNSNumberを渡すことができます:」 – florinzf

+0

データ構造: { 「createdAt」:「20161013134743」、 "imageURLに": ""、 "緯度":44.43127318210377、 "経度":26.07118959027369、 "OBJECTID": "-KTyI60jaUUuRBj-SIRR"、 "OWNERID": "TlQZr5cqSIUboBO8k3bjz3q6oj63"、 "postText":「ブラボーsefu」ラ・ムース「、 "回答!":4、 "reportCount":0、 "スコア":5、 "updatedAt": "20161013134743" } – florinzf

答えて

0

あなたcreatedAtプロパティは、日付として格納されていません。それは文字列として格納されます:20161013134743

ですから、クエリを実行するために同様にフォーマットされた文字列へのあなたの日付変数を変換する必要があります:

let threeDaysAgo = Date(timeIntervalSinceNow: -3*24*60*60) 
let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyyMMddHHmmss" 
let dateString = dateFormatter.stringFromDate(threeDaysAgo) 
ref.queryOrdered(byChild: "createdAt").queryStarting(atValue: dateString) 
+0

ありがとう!私は最初に試したときにこれがなぜうまくいかなかったのか覚えていませんが、あなたの事例に従った後にはどうしますか。 – florinzf

関連する問題