2014-09-25 18 views
5

için NSArray içeriğinin eklenmesi Uygulamamda hem hızlı hem de objektif-c kullanıyorum.Swift Array

Bir CustomClass'ım var ve sınıf için bir hızlı dizi oluşturmak ve bunlara arrayOfCustomClass adlı NSArray'da bu nesnelerin bir dizisi olan oldClass adlı nesnel-c sınıfından içerik eklemek istiyorum.

'[(CustomClass)]' is not identical to 'CGFloat' 

Herhangi yardım:

var newArray = [CustomClass]() 
newArray += oldClass.arrayOfCustomClass 

Bu hataya neden oluyor? teşekkürler Rıza

+1

Gerçek kodun kalanını göster! 'OldClass' nedir? ArrayOfCustomClass' nedir? – matt

cevap

0

Sorun, Swift'in bir NSArray öğesinde ne olduğunu bilmemesidir. NSArray'ı bir [CustomClass]'a açıkça vermelisiniz (ve yalan söylemezseniz veya çalışma zamanında çökersiniz). iş gibi görünüyor ne

+0

Ancak, burada 'arrayOfCustomClass' gerçekten ne olduğunu açıklayana kadar bilinmeyecek olan ek sorunlar olabilir. – matt

+0

Aşağıdaki cevabımın CustomClass – reza23

+0

'a gönderilmeden önce AnyObject'e gönderilmem gerektiğini gösterdiği gibi, isteğe bağlı bir cast ile güvenli bir şekilde yapılabilir - cevabımı görün. –

0

geçerli:

newArray += oldClass.arrayOfCustomClass as AnyObject as [CustomClass] 
0

Bunu yapmak için güvenle sadece isteğe bağlı bir döküm denemek gerekir. Eğer NSArray sadece tip CustomClass unsurları vardır düşünüyorsanız, bunu yapabilirsiniz:

var newArray = [CustomClass]() 
if let customArray = oldClass.arrayOfCustomClass as? [CustomClass] { 
    newArray += customArray 
} 

sen (Biliyorum, ne sordu biraz farklı) CustomClass unsurları ayıklamak istiyorsanız, bu yoludur:

var newArray = [CustomClass]() 
for element: AnyObject in oldClass.arrayOfCustomClass { 
    if let custom = element as? CustomClass { 
     newArray.append(custom) 
    } 
}