2016-08-20 11 views
6

के रूप में दो एपीआई का उपयोग करके लिकिंग सुविधा कार्यान्वयन हम अपने आईओएस ऐप के लिए एक सरल अनुवर्ती सुविधा बनाने की कोशिश कर रहे हैं। हमारे पास दो एपीआई हैं जो हमारे ऑब्जेक्ट के भीतर हमारे ब्रांड के लिए अद्वितीय ब्रांड आईडी युक्त ऑब्जेक्ट्स की एक सरणी के साथ हमारे Brand API हैं। और हमारे Firebase API जहां हम उपयोगकर्ताओं को स्टोर करते हैं। Firebase API के भीतर इसमें unique brand ids from our ब्रांड एपीआई 'से जुड़ी ऑब्जेक्ट्स के साथ निम्नलिखित ब्रांड्स नामक एक कुंजी है जो मूल्य के साथ कुंजी के रूप में है। एक बार जब उपयोगकर्ता ने हमारे ऐप पर ब्रांड पसंद करने के बाद ब्रांड का अनुसरण किया है तो ऑब्जेक्ट्स बनाए जाते हैं।क्लाइंट साइड के माध्यम से आईओएस ऐप (स्विफ्ट)

जब ऐप लोड होता है तो हम यह देखने के लिए जांच करते हैं कि Firebase API की ब्रांड आईडी कुंजी Brand API की ब्रांड आईडी से मेल खाती है तो यह इंगित करने के लिए एक स्टार दिखाएं कि उपयोगकर्ता पहले ही ब्रांड का अनुसरण कर रहा है।

हमारी समस्या Brand API को पेजिनेशन (यानी ऑफसेट) के साथ कार्यान्वित किया गया है, तो हम अपने सभी ब्रांडों को कैसे सत्यापित करेंगे यदि सभी अद्वितीय ब्रांड आईडी हमारे Firebase API के साथ तुलना करने के लिए उपलब्ध होंगी?

हम आईओएस पक्ष पर तेजी से उपयोग करते हैं। और Brand API Django-tastypie

Firebase एपीआई

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

ब्रांड एपीआई का उपयोग कर बनाया गया है

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

उत्तर

1

आप एक चाल कर सकते हैं जब भी ब्रैंडआईड आपके पास फ़ायरबेज होता है तो ब्रांड्स कुंजी के बराबर होता है। आपको इसे ब्रांडएपीआई में जांचने की आवश्यकता नहीं है क्योंकि मुझे लगता है कि आप पहले से ही प्रत्येक ब्रांड को फायरबेसैपी में उपयोगकर्ता द्वारा डालेंगे, इसलिए यह आपके लिए काम करेगा।

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

यह नहीं वास्तव में स्पष्ट है कि तुम क्या ईमानदारी से पूरा करने के लिए कोशिश कर रहे हैं। ब्रांड एपीआई बहुत कुछ नहीं करता है, या? या क्या यह आंतरिक आईडी और अद्वितीय ब्रांड आईडी के बीच अनुवाद कर रहा है? यदि हां, तो क्यों?

एक साधारण समस्या समाधान के रूप में आप स्वादिष्टता के उत्पादन के अनुसार पेजिंग को बंद कर सकते हैं, आपके सेट में केवल 33 रिकॉर्ड हैं, इसलिए Meta कक्षा के माध्यम से या तो सीमा निर्धारित करना, उदा। max_limit = 1000 या ?limit=1000 के माध्यम से API संसाधन को कॉल करते समय सभी ऑब्जेक्ट्स को वापस करना चाहिए। यदि वे ज्यादा नहीं बदलते हैं तो आपको शायद कुछ कैशिंग लागू करनी चाहिए।

संबंधित मुद्दे