2015-02-21 22 views
9

Bir tablo Görünümü içeren bir görünüm var. Sonuçları Temel Veriler'den görüntülemek için NSFetchedResultsController kullanıyorum.NSFetchedResultsController ve UISearchController birlikte nasıl kullanılır?

Bir UISearchController eklemek istiyorum (bu, iOS 8'de kullanımdan kaldırılan bir UISearchDisplayController değil) ancak bunları nasıl bağlayacağımı bilmiyorum.

Sadece bir tane NSFetchedResultsController veya iki tane olmalı mı? NSFetchedResultsController ile tüm verileri getirmenin ve sonra onları UISearchController'a göre sıralamanın bir yolu olduğunu mu düşünüyorsun?

Bu konuda bana yardımcı olabileceğiniz için teşekkürler.

cevap

8

Birkaç düşünceler ...

Eğer searchController için resultsController oluşturmak

, ona aramak istediğiniz verileri geçirebilir. Ana tablonuzda NSFetchedResultsController kullanıyorsanız, fetchedObjects dizisini geçirebilirsiniz. Ardından, arama metninde yapılan değişikliklere yanıt olarak, diziyi filtrelersiniz (arama sonuçlarını içeren ayrı bir dizi oluşturmak için bir yüklem ve filteredArrayUsingPredicate kullanabilir veya diziyi oluşturmak için yineleme yapabilirsiniz). Bu rotanın dezavantajları, (manuel olarak uygulanmadıkça), arama sonuçları ayrı bölümlere ayrılmayacak ve altta yatan veriler değiştiğinde arama sonuçları otomatik olarak güncellenmeyecektir (örneğin bir arka plan iş parçacığında). Sanırım ikinci bir NSFetchedResultsController: bölümlerin kullanımını kolaylaştırabilir ve örneğin verileriniz arka planda güncelleştiriliyorsa sonuçların otomatik olarak güncellenmesine (temsilci yöntemleri kullanılarak) izin verebilir. Ama tanıttığı karmaşıklığın gerginliğini duyardım. Eğer (yani resultsController = nil belirtin) in situ arama uygulamak için tercih eğer

Diğer bir seçenek, (yani altta yatan yüklem değiştiren ve getirme reperforming) NSFetchedResultsController kendini güncellemek için arama ölçütlerini kullanmak olacaktır. Bu şekilde arama tablonuz tam olarak ana tablo gibi görünür ve hissedilir (bunu kullanırsanız bölümler de dahil olmak üzere), ancak arama ölçütleri daha hassas hale geldikçe görüntülenen satırlar azalır. Bu seçenek, FRC'nin düzgün bir şekilde yeniden oluşturulduğundan ve büyük bir veri kümeniz varsa, kabul edilemez bir performansa sahip olduğundan emin olunmalıdır.

+0

Birkaç ay sonra buraya girerken, yukarıdaki üçüncü seçeneği uyguladık; Kod çok daha temiz ve iki 'NSFetchedResultsController's arasında geçiş yapmak zorunda değilim. – Koen

İlgili konular