2013-10-29 8 views
8

में सम्मिलन स्थिति कैसे प्राप्त करें मेरे पास सॉर्टेड ऑब्जेक्ट्स का एनएसएमयूटेबलएरे है, जो UITableView में प्रदर्शित होते हैं।आईओएस: क्रमबद्ध एनएसएमयूटेबलएरे

मैं सरणी में एक नई वस्तु डालना चाहता हूं और तालिका दृश्य को अपडेट करना चाहता हूं - जिसके लिए नई डालने वाली वस्तु की अनुक्रमणिका की आवश्यकता होती है।

मुझे तालिका दृश्य को अपडेट करने के लिए मुझे उस सरणी में सही प्रविष्टि अनुक्रमणिका बताने के लिए कोई सिस्टम संदेश नहीं मिला है।

सबसे अच्छा मैं मिल सकती है:

  • नई वस्तु
  • तरह
  • जोड़ने सरणी के पुराने प्रति का उपयोग कर, नई वस्तु के स्थान (जो खोज की आवश्यकता है)
लगता है

या

  • इन्स के लिए अपनी खोज लिखें ertion स्थिति

निश्चित रूप से, एक क्रमबद्ध सरणी में सम्मिलन स्थिति खोजने के लिए एक संदेश होना चाहिए? या क्या मैं यहाँ कुछ स्पष्ट याद कर रहा हूँ?

उत्तर

24

आप संपूर्ण सरणी पर indexOfObject:inSortedRange:options:usingComparator: विधि का उपयोग कर सकते हैं। इस विधि एक सीमा है कि आप पारित पर एक द्विआधारी खोज करता है, और आप सम्मिलन बिंदु जब आप NSBinarySearchingInsertionIndex विकल्प का उपयोग करने देता है:

NSUInteger insPoint = [myArray 
    indexOfObject:toInsert 
    inSortedRange:NSMakeRange(0, [myArray count]) 
    options:NSBinarySearchingInsertionIndex 
    usingComparator:^(id lhs, id rhs) { 
     return // return the result of comparing two objects 
    } 
]; 
+3

कूल। मुझे उस विधि के बारे में पता नहीं था। साझा करने के लिए धन्यवाद। (मतदान) विकास में एक रिश्तेदार पुराने टाइमर के रूप में, मैं कोको ढांचे की गहराई और चौड़ाई से आश्चर्यचकित हूं। –

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