2014-06-12 12 views
13

मेरे पास एक "टेबल" है जिसमें नए रिकॉर्ड जोड़ने पर संभावित रूप से कई रिकॉर्ड हो सकते हैं, मुझे यह जानने की ज़रूरत है कि वर्तमान तालिका में कितने रिकॉर्ड पहले से हैं, क्योंकि मैं इसे कुछ मानों की गणना में उपयोग करता हूं। निकटतम बात मैं मिल सकता है इस तरह सभी प्रविष्टियों अनुरोध कर रहा है:क्लाउडकिट गिनती रिकॉर्ड

var query : CKQuery = CKQuery(recordType: "Stars", predicate: NSPredicate(format: "mass > 0")) 
    var request : CKQueryOperation = CKQueryOperation(query: query) 
    var starCount = 0 

    request.queryCompletionBlock = { 
     (cursor:CKQueryCursor!, error:NSError!) in 
     if error { 
      completionHandler(ECOResponse.error(error.description), starCount) 
     } else { 
      completionHandler(ECOResponse.ok(), starCount) 
     } 
    } 

    request.recordFetchedBlock = { 
     (record:CKRecord!) in 
     starCount += 1 
    } 

मैं queryCompletionBlock CKQueryCursor के साथ एक गिनती या परिणाम सरणी दिया चाहते हैं, लेकिन दुर्भाग्य से ऐसा नहीं है।

क्या तालिका में पंक्तियों की संख्या की गणना करने का कोई अन्य तरीका है?

+0

आप शायद ऐप्पल डेवलपर मंचों पर यह पूछना चाहेंगे। मुझे लगता है कि यह जानकारी अभी भी ऐप्पल डेवलपर समझौते के तहत निजी है। –

+0

दुर्भाग्यवश क्लाउडकिट के बारे में बहुत सी चर्चाएं नहीं चल रही हैं। –

उत्तर

9

नहीं, आपकी क्वेरी का अनुपालन करने वाले रिकॉर्ड की कुल संख्या प्राप्त करना संभव नहीं है। इसके परिणामस्वरूप गिनती भी गलत हो सकती है। क्लाउडकिट द्वारा लौटाए गए रिकॉर्ड की संख्या तय नहीं है। क्लाउडकिट में यह तय करने के लिए एक तंत्र है कि कितने रिकॉर्ड वापस आते हैं। इसे CKQueryOperation ऑब्जेक्ट पर एक निश्चित संख्या में सेट करना संभव है। डिफ़ॉल्ट है:

operation.resultsLimit = CKQueryOperationMaximumResults; 

इस संपत्ति के लिए दस्तावेजों का कहना है:

कि मूल्य का उपयोग करते समय सर्वर एक सीमा होती है कि संभव के रूप में कई रिकॉर्ड रिटर्न परिणाम की बेहतरीन संख्या प्रदान करना चुनता है जबकि उन रिकॉर्ड्स प्राप्त करने में देरी को कम करना। हालांकि, अगर आप जानते हैं कि आप निश्चित परिणामों की प्रक्रिया करना चाहते हैं, तो तदनुसार इस संपत्ति का मूल्य बदलें।

यदि आपकी गणना इस निश्चित संख्या के समान है, तो आपकी क्वेरी की तुलना में शायद अधिक रिकॉर्ड हैं।

+2

कभी-कभी इस स्थिरता का उपयोग करते समय (जो 0 से 0 है) मुझे त्रुटि मिलती है malhal

+3

में अधिकतम संख्या में आइटम शामिल हैं, कभी-कभी यदि आप कहते हैं कि आप 1000 का अनुरोध करते हैं और यह विफल रहता है, तो यदि आप कर्सर का उपयोग करते हैं और सभी 1000 प्राप्त करने के लिए 100 की सीमा का उपयोग करते हैं। फिर आप कोशिश करते हैं और एक बार फिर से सभी 1000 प्राप्त करते हैं तो यह सफल होता है! तो सर्वर कैशिंग में होना चाहिए और रिकॉर्ड कैश में होने पर बड़ी सीमाओं की अनुमति देनी चाहिए। – malhal

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