2016-08-20 23 views
6

Olarak istemci tarafı üzerinden iki API kullanarak özellik uygulaması beğenme IOS uygulamamız için basit bir takip özelliği oluşturmaya çalışıyoruz. Her bir nesnedeki markalarımız için benzersiz marka kimlikleri içeren bir dizi nesneye sahip iki API'mız olan Brand API'a sahibiz. Ve kullanıcılarımızı sakladığımız Firebase API. Firebase API içinde, true değerine sahip anahtarlar olarak, unique brand ids from our Marka API'sinden oluşan ve bunlardan oluşan nesneler dizisi olan followBrands adlı bir anahtar vardır. Nesneler, bir kullanıcı markayı uygulamamızdaki markayı beğenerek takip ettikten sonra oluşturulur.IOS uygulaması (Swift)

Uygulama yüklendiğinde, Firebase API markasının ids anahtarlarının Brand API marka kimliğiyle eşleşip eşleşmediğini kontrol ettikten sonra kullanıcının markayı takip ettiğini gösteren bir yıldız gösterip göstermediğini kontrol ediyoruz.

Bizim sorunumuz Brand API (yani ofset), sayfalama ile uygulanır, bu nedenle nasıl tüm benzersiz marka kimlikleri bizim Firebase API ile karşılaştırmak için hazır olacaktır eğer takip ediyor marka kontrol edecek?

IOS tarafında hızlı bir şekilde kullanıyoruz. Ve Brand API django-tastypie

Firebase API

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

Marka API kullanarak inşa edilmiştir

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

cevap

1

Sadece bir brandID ne olursa olsun ateşböceğini gösteren bir numara gösterebilirsiniz. brandAPI içinde kontrol etmenize gerek yok, zira her markayı takiben fireBaseAPi'ye eklediğiniz için bu sizin için işe yarayacaktır.

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

O değil dürüst olmak başarmak istediğiniz şeyi çok net. Marka API çok şey yapmıyor mu? Yoksa dahili kimlik ile benzersiz marka kimlikleri arasında çeviri mi yapıyor? Öyleyse neden?

Basit bir problem çözümü olarak, sayfa numaranızda tadımı yapabildiğinize göre, kümenizde yalnızca 33 kayıt var, yani Meta sınıfı aracılığıyla bir sınırın ayarlanması, örn. max_limit = 1000 veya API kaynağını ?limit=1000 aracılığıyla çağırırken tüm nesneleri döndürmelidir. Çok fazla değişmezlerse, muhtemelen bazı önbellekleme uygulamalısınız.