2016-08-20 11 views
6

IOSアプリケーションのための簡単なフォロー機能を構築しようとしています。私たちは2つのAPIを持っていますBrand API各オブジェクト内の私たちのブランドのためのユニークなブランドIDを含むオブジェクトの配列を持つ。また、私たちはユーザーを保管するFirebase APIです。 Firebase APIの中には、unique brand ids from ourブランドAPIで構成された次のブランドとオブジェクトの配列と呼ばれるキーがキー値としてtrueというキーがあります。オブジェクトが作成されるのは、ユーザーがブランドをフォローした後にアプリでブランドを好きにしたときです。IOSアプリケーション(Swift)としてクライアントサイド経由で2つのAPIを使用する機能の実装

アプリが読み込まれると、Firebase APIのブランドIDキーがBrand APIのブランドIDと一致するかどうかが確認され、ユーザーが既にブランドをフォローしていることを示す星印が表示されます。

私たちの問題は、(すなわちオフセット)、改ページでBrand API実装されている、そうではないすべてのユニークなブランドIDが私たちのFirebase APIと比較できる状態にあるかどうか、どのように我々は、彼らが次されているすべてのブランドを確認するのでしょうか?

私たちはIOS側でswiftを使用します。そしてBrand APIはジャンゴ・tastypie

Firebase API

"user_id" : { 
    "currentFollowingCount" : 0, 
    "displayName" : "", 
    "email" : "", 
    "followingBrands" : { 
    "unique_brand_id" : true 
    }, 
    "provider" : "Facebook", 
    "userID" : "user_id" 
} 

ブランドAPIに

を使用して
{ 
    "labels": [ 
    { 
     "id": "unique_brand_id" 
    } 
    ], 
    "meta": { 
    "limit": 10, 
    "next": "/api/?limit=10&offset=10", 
    "offset": 0, 
    "previous": null, 
    "total_count": 33 
    } 
} 

答えて

1

brandIDがfireBase followingBrandsキーと等しい場合はいつでも、スターを表示するだけでトリックを行うことができます。 brandAPIでチェックする必要はありません。fireBaseAPiにすべてのブランドを挿入した後に、このブランドが使用できるようになります。

let fireBaseResponse:[String:AnyObject?] = [ 
         "followingBrands":["unique_brand_id":true] 
         ] 

let customObject = ["customObjectBrandID":"unique_brand_id"]//yourObject 

let followingBrandsArr = (fireBaseResponse["followingBrands"] as! [String:Bool]).keys 

//now do a check for Star 
let myObjectBrandID = customObject["customObjectBrandID"] 
if followingBrandsArr.contains(myObjectBrandID!) == true{ 
    print("user is following this brand so show the follow star") 
}else{ 
    print("don't show or hide it") 
} 
1

を内蔵しているそれはあなたが正直に達成しようとしているものを実際に明確ではありません。ブランドAPIはあまり効果がありませんか?それとも内部IDと固有のブランドIDの間の変換ですか?もしそうなら、なぜですか?

迷路の出力に応じて、ページ設定を無効にすることができる単純な問題解決策として、セットには33レコードしかないので、Metaクラスを使用して制限を設定します。 max_limit = 1000またはAPIリソースを?limit=1000で呼び出してすべてのオブジェクトを返す必要があります。それらがあまり変化しない場合は、おそらくキャッシュを適用するべきです。

関連する問題