2016-04-12 24 views
0

Dizi sayısı eksi dizi sayısını nasıl gösterebilirim? Böyle iki diziler var:Dizi sayısı eksi dizi sayısı

var likedBy = [NSArray]() 
var dislikedBy = [NSArray]() 

Ve böyle UITextLabel bir dize olarak sayım sonucuna varmak için çalışıyorum:

imageCell.likeLabel.text = self.likedBy.count - self.dislikedBy.count 

Ama hata alıyorum:

No "-" candidates produce the expected contextual result type "String?"

Herhangi öneri?

+0

Dize (self.likedBy.count - self.dislikedBy.count) – ogres

+0

ipucu: sayım metni _string_ bir _NUMBER_ olduğunu. – holex

+1

Öneri # 1: * Okuma * hata mesajı. - Öneri # 2: Eğer anlamadığınız bir derleyici hatası alırsanız, * ifadeyi çoklu ifadelere ayırın: 'diff = self.likedBy.count - self.dislikedBy.count; imageCell.likeLabel.text = diff'. Şimdi sorunu görmelisin! –

cevap

3

Sen mülkiyet Int döndürür \()count çünkü ile dize interpolasyon kullanmalıdır ve text özelliğini ayarlamak için bir String gerek: Ayrıca yazmak isteyebilirsiniz

imageCell.likeLabel.text = "\(self.likedBy.count - self.dislikedBy.count)" 
+0

Teşekkürler! Hızlı soru - 'cellForItemAtIndexPath' - indexPath.row ve indexPath.item arasındaki fark nedir? –

+0

'item': Koleksiyon görünümünün bir bölümünde bir öğeyi tanımlayan bir dizin numarası. –

+0

indexpath.item vs indexpath.row hakkında daha fazla bilgi için http://stackoverflow.com/a/14765781/2035845 göz atın! –

1

NSArray üzerinde bir eleman sayımı farkı sağlamak için kodunuzun daha temiz olmasını ve sorumlulukların doğru yerde bulunmasını sağlar. İçinde olduğu gibi, ana kod akışınız iki dizi sayımı arasındaki farkı çözmekle ilgilenmiyor, sevmediklerin çıkarılmasından sonra kaç tane solun kaldığını bilmek istiyor.

extension NSArray { 
    func elementCountDiff(array: NSArray) -> Int { 
     return self.count - array.count 
    } 
} 

... 

imageCell.likeLabel.text = String(self.likedBy.elementCountDiff(self.dislikedBy)) 
1

satır yerine

imageCell.likeLabel.text = "\(self.likedBy.count - self.dislikedBy.count)"