Yolların eşit olup olmadığını sınamak için eşit bir yöntem olup olmadığını sınamanın bir yolunu arıyorum. compare:
'u denedim ama işe yaramaz gibi görünüyor, dizinler kesinlikle aynı olmasa bile, NSOrderedSame
ile karşılaştırıldığında her zaman doğru olur.İki NSIndexPaths nasıl karşılaştırılır?
cevap
Neredeyse tüm Objective-C nesneleri isEqual:
yöntemi kullanılarak karşılaştırılabilir. Yani, eşitliği test etmek için, sadece [itemCategoryIndexPath isEqual:indexPath]
'a ihtiyacınız var ve gitmekte fayda var. Şimdi, bu NSObject
isEqual:
uygular çünkü çalışır, bu nedenle, tüm nesneler otomatik olarak bu yönteme sahiptir, ancak belirli bir sınıf geçersiz kılmazsa, isEqual:
yalnızca nesne işaretçileriyle karşılaştıracaktır.
NSIndexPath
söz konusu olduğunda, isEqual:
yöntemi geçersiz kılındığından, nesneleri beklediğiniz gibi karşılaştırabilirsiniz. Ancak yeni bir sınıf yazacak olsaydım, MyObject
ve yöntemi geçersiz kılmazsa, [instanceOfMyObject isEqual:anotherInstanceOfMyObject]
etkin olarak instanceOfMyObject == anotherInstanceOfMyObject
ile aynı olurdu.
NSObject Protocol Reference'da daha fazlasını okuyabilirsiniz.
'isEqual çalışır, teşekkürler! –
@Itai Ferber, bir yöntem geçersiz kılınmış ya da edilmemişse, nasıl bilen var. – Vasu
@Kailash Bir yöntemin geçersiz kılınmış olup olmadığını bilmeniz gerekmez. Bir yol olabileceğini düşünüyorum, ama emin değilim; Bu, günlük programlamanın alanı içinde değil - çalışma zamanı ile uğraşmak biraz zaman alacaktı. Neyse, çoğunlukla, bir sınıfın bu yöntemi geçersiz kılıp kılmadığını bilmesi için bir neden yoktur, çünkü size ihtiyacınız olan işlevselliği sağlar. Nesnelerde her zaman 'isEqual:' kullanın ve sınıfın sizin için sorunu çözmesine izin verin. –
Swift'de, NSIndexPaths'ın aynı olup olmadığını karşılaştırmak için ==
kullanın.
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"
Swift, değer karşılaştırmaları için ==
'u kullanır. ===
, iki değişkenin tam olarak aynı örneği (bellekte yer vb.) Referans aldığını tespit etmek için kullanılır. İlginç bir şekilde, indexPath1 === indexPath2
, NSIndexPath değerlerini (bölüm satırı) eşleştiğinde aynı örneği paylaşmak için oluşturulduğunu gösterir, böylece örnekleri karşılaştırıyor olsanız bile, yine de geçerli olur.
Bu yanıt neredeyse tamamen this fantastic SO answer from drewag'dan alınmış ve burada 'index indexpath'ı karşılaştırmak için ilk Google sonucu olduğundan yeniden oluşturulmuştur ve biz sadece bir link yapıştırmamamız gerekiyor.
Bu soru neredeyse 4 yaşında, objektif-c olarak etiketlendi ve kabul edilmiş bir cevabı var. Bunu ayrı bir soruya cevap olarak göndermenin daha iyi olacağını düşünüyorum. – sbooth
Sadece benim gibi gelecekteki çaylaklara yardım etmeye çalışıyorum. Google'ın indexPath ile karşılaştırmasını yaptığınızda # 1 sonuç olur. Ayrı bir soru soracağım ve bu cevabı postalayacağım ama insanlar bunu ilk defa uzun zamandır bulacaktır. :) –
Aslında cevabımda bahsettiğim gibi soru zaten sorulmuştu. http://stackoverflow.com/questions/25172525/comparing-nsindexpath-swift - Ancak 'indexpath swift'i karşılaştır' aradığınızda yerinde arama bile bu soruyu göstermiyor. Sadece bu cevabı gösteriyor. Bu yüzden burada insanları işaret etmek için cevabımı burada bırakacağım. –
- 1. İki kez nasıl karşılaştırılır?
- 2. İki NSInteger nasıl karşılaştırılır?
- 3. İki arraylist nasıl karşılaştırılır?
- 4. İki veri tabanı nasıl karşılaştırılır?
- 5. İki CharSequences'daki karakterler nasıl karşılaştırılır
- 6. Haskell'de iki liste nasıl karşılaştırılır?
- 7. İki csv dosyası nasıl karşılaştırılır?
- 8. İki dize dizisi nasıl hizalanır veya karşılaştırılır?
- 9. Python'da iki dosyanın değiştirilme tarihi nasıl karşılaştırılır?
- 10. Java'da iki çift değer nasıl karşılaştırılır?
- 11. jQuery ile iki tarih değeri nasıl karşılaştırılır
- 12. Linux'ta iki büyük dosya nasıl karşılaştırılır?
- 13. İki Zend_Date nesnesinin tarih bölümleri nasıl karşılaştırılır?
- 14. İki değişken xsl ile nasıl karşılaştırılır?
- 15. Kriteri API'sında iki LocalDate nesnesi nasıl karşılaştırılır?
- 16. Android'de iki düğme değeri nasıl karşılaştırılır
- 17. İki dize, mysql ile nasıl karşılaştırılır
- 18. Açıklamada jinja2'de iki tam sayı nasıl karşılaştırılır?
- 19. Yaylı Batch kullanarak iki büyük sıralanmamış CSV dosyası nasıl karşılaştırılır?
- 20. İki tarihin zamanı değil, yalnızca tarih kısmı nasıl karşılaştırılır?
- 21. İki veri karesi/tablo nasıl karşılaştırılır ve R?
- 22. BASH kullanarak aynı metin için iki metin dosyası nasıl karşılaştırılır?
- 23. Boost.Test ile dosya nasıl karşılaştırılır?
- 24. 2 Xcode hedefi nasıl karşılaştırılır
- 25. Python'da nasıl karşılaştırılır?
- 26. Kabuk betiğinde nasıl karşılaştırılır?
- 27. Genel türler nasıl karşılaştırılır?
- 28. Eşitlik Türleri Nasıl Karşılaştırılır?
- 29. Birden çok satır nasıl karşılaştırılır?
- 30. MySQL veritabanı şemaları nasıl karşılaştırılır
Lütfen kodunuzu karşılaştırın: yöntemini kullanarak gönderin. – thomashw
'[itemCategoryIndexPath karşılaştırması: indexPath] == NSOrderedSame 'oldukça düz ileri, ben smth eksikti? –
@Valentin Radu, önceki yorumunuzda, şunu demek istiyorsun: 'karşılaştırmak:' sorularınız, bahsinizde bahsettiğinizin aksine? – Vasu