मैं परीक्षण करने के लिए एक तरीका ढूंढ रहा हूं कि सूचकांक पथ बराबर हैं, और बराबर से मेरा मतलब प्रत्येक स्तर के बराबर है? मैंने compare:
की कोशिश की लेकिन ऐसा लगता है कि काम नहीं करना है, NSOrderedSame
की तुलना में मैं हमेशा सच हो जाता हूं, भले ही इंडेक्स निश्चित रूप से समान न हों।दो NSIndexPaths की तुलना कैसे करें?
उत्तर
लगभग सभी उद्देश्य-सी वस्तुओं की तुलना isEqual:
विधि का उपयोग करके की जा सकती है। तो, समानता का परीक्षण करने के लिए, आपको केवल [itemCategoryIndexPath isEqual:indexPath]
की आवश्यकता है, और आप जाने के लिए अच्छे हैं। अब, यह काम करता है क्योंकि NSObject
isEqual:
लागू करता है, इसलिए सभी ऑब्जेक्ट्स में स्वचालित रूप से वह विधि होती है, लेकिन यदि कोई निश्चित वर्ग इसे ओवरराइड नहीं करता है, तो isEqual:
ऑब्जेक्ट पॉइंटर्स की तुलना करेगा।
NSIndexPath
के मामले में, isEqual:
विधि को ओवरराइड कर दिया गया है, इसलिए आप उन वस्तुओं की तुलना कर सकते हैं जिनकी आप अपेक्षा कर रहे थे। लेकिन अगर मैं एक नई कक्षा, MyObject
लिखना चाहता था और विधि को ओवरराइड नहीं करता था, [instanceOfMyObject isEqual:anotherInstanceOfMyObject]
प्रभावी रूप से instanceOfMyObject == anotherInstanceOfMyObject
जैसा ही होगा।
आप NSObject Protocol Reference में और अधिक पढ़ सकते हैं।
'isEqual' काम करता है, धन्यवाद! –
@ इटाई फेबर, अगर कोई विधि ओवरराइड हो या नहीं, तो कोई कैसे जान सकता है। – Vasu
@ कैलाश आप जरूरी नहीं जान सकते कि कोई विधि ओवरराइड हो गई है या नहीं। मुझे लगता है कि एक रास्ता हो सकता है, लेकिन मुझे यकीन नहीं है; यह हर रोज प्रोग्रामिंग के दायरे में नहीं है - यह रनटाइम के साथ कुछ गड़बड़ कर लेगा। वैसे भी, अधिकांश भाग के लिए, यह जानने की आवश्यकता नहीं होगी कि कोई वर्ग इस विधि को ओवरराइड करता है, क्योंकि यह आपको आवश्यक कार्यक्षमता प्रदान कर रहा है। ऑब्जेक्ट्स पर हमेशा 'isEqual:' का उपयोग करें, और कक्षा को स्वयं के लिए समस्या को संभालने दें। –
स्विफ्ट में आप ==
का उपयोग करने के लिए तुलना करते हैं यदि NSIndexPaths समान हैं।
import UIKit
var indexPath1 = NSIndexPath(forRow: 1, inSection: 0)
var indexPath2 = NSIndexPath(forRow: 1, inSection: 0)
var indexPath3 = NSIndexPath(forRow: 2, inSection: 0)
var indexPath4 = indexPath1
println(indexPath1 == indexPath2) // prints "true"
println(indexPath1 == indexPath3) // prints "false"
println(indexPath1 == indexPath4) // prints "true"
println(indexPath1 === indexPath2) // prints "true"
println(indexPath1 === indexPath3) // prints "false"
println(indexPath1 === indexPath4) // prints "true"
स्विफ्ट मूल्य तुलना के लिए ==
का उपयोग करता है। ===
का उपयोग यह पता लगाने के लिए किया जाता है कि दो चर सही सटीक उदाहरण (स्मृति आदि में स्थान) का संदर्भ देते हैं। दिलचस्प बात यह है कि indexPath1 === indexPath2
दिखाता है कि जब भी मान (सेक्शन पंक्ति) मिलान होता है, तो उसी इंस्टेंस को साझा करने के लिए NSIndexPath बनाया गया है, भले ही आप उदाहरणों की तुलना कर रहे हों, फिर भी यह मान्य होगा।
यह उत्तर लगभग this fantastic SO answer from drewag से लगभग पूरी तरह से लिया गया और यहां पुन: प्रस्तुत किया गया क्योंकि यह 'इंडेक्सपाथ की तुलना करें' के लिए पहला Google परिणाम है और हमें केवल एक लिंक पेस्ट नहीं करना चाहिए।
यह प्रश्न लगभग 4 साल पुराना है, जिसे उद्देश्य-सी टैग किया गया है, और इसका एक स्वीकार्य उत्तर है। मुझे लगता है कि इसे एक अलग प्रश्न के उत्तर के रूप में पोस्ट करना बेहतर होगा। – sbooth
बस मेरे जैसे भावी रूकीज़ की मदद करने की कोशिश कर रहा है। यह # 1 परिणाम है जब आप Google 'indexPath की तुलना करें'। मैं एक अलग सवाल पूछूंगा और इस उत्तर को पोस्ट करूंगा लेकिन लोग इसे लंबे समय तक ढूंढ पाएंगे। :) –
वास्तव में सवाल पहले से ही पूछा गया था, जैसा कि मैंने अपने उत्तर में उल्लेख किया था। http://stackoverflow.com/questions/25172525/comparing-nsindexpath-swift - लेकिन जब भी आप 'इंडेक्सपाथ स्विफ्ट की तुलना करें' की खोज करते हैं तो ऑनसाइट खोज उस प्रश्न को तब तक नहीं दिखाती है। यह सिर्फ यह जवाब दिखाता है। तो मैं वहां लोगों को इंगित करने के लिए यहां अपना उत्तर छोड़ने जा रहा हूं। –
- 1. NSIndexPaths
- 2. दो तिथियों की तुलना करें
- 3. दो UIImages की तुलना करें
- 4. दो एनएसएसआरिंग्स की तुलना करें
- 5. दो प्रश्नों की तुलना कैसे करें?
- 6. दो एनएसआईएनटेगर की तुलना कैसे करें?
- 7. दो डेटाफ्रेम की तुलना कैसे करें?
- 8. दो regexps की तुलना कैसे करें?
- 9. दो सरणीसूची की तुलना कैसे करें?
- 10. दो डेटाटाइम्स की तुलना कैसे करें
- 11. दो डेटाबेस की संरचनाओं की तुलना करें?
- 12. की तुलना दो ArrayList
- 13. केवल दिनांक भाग की तुलना कैसे करें और दो तिथियों के समय की तुलना कैसे करें?
- 14. दो छवियों की तुलना करें, और%
- 15. जावा में दो तिथियों की तुलना करें
- 16. दो सरणी की सामग्री की तुलना कैसे करें?
- 17. दो छवि स्केलिंग एल्गोरिदम की "गुणवत्ता" की तुलना कैसे करें?
- 18. चींटी: दो फ़ाइलों की सामग्री की तुलना कैसे करें
- 19. दो Arrays की तुलना
- 20. दो ऑब्जेक्ट्स की तुलना
- 21. दो वस्तुओं की तुलना।
- 22. दो सीजीआरईटी की तुलना
- 23. दो ऑडियो फ़ाइलों की तुलना करें
- 24. जावा दो मानचित्र की तुलना करें
- 25. दो बाइट Arrays की तुलना करें? (जावा)
- 26. (कोल्डफ्यूजन) दो तिथियों की तुलना करें,
- 27. दो fxcop परिणामों की तुलना करें
- 28. दो वैक्टरों की तुलना करें सी ++
- 29. एक्सेल दो कॉलम की तुलना करें और
- 30. LINQ दो सूचियों की तुलना करें और
कृपया तुलना करके अपना कोड पोस्ट करें: विधि। – thomashw
'[itemCategoryIndexPath तुलना करें: indexPath] == NSOrderedSame' बहुत सीधे आगे, क्या मुझे smth याद आ रही थी? –
@ वेलेंटीन राडू, आपकी पिछली टिप्पणी में, क्या आपका मतलब है कि 'तुलना करें:' काम करता है, जैसा कि आपने अपने प्रश्न में उल्लेख किया है? – Vasu