2016-03-27 31 views
0

Ben ancak aşağıdaki hata döndürülür, AnyObject.filter yöntemi kullanmaya çalıştı: kapatma argüman listesi içinAnyObject.filter yöntemini nasıl kullanabilirim?

Bağlamsal tip örtülü göz ardı edilemeyecek 1 argüman, bekliyor. Bunun bir kapak (tamsayılar dizisi ile örnek olarak) kullanmak mümkündür görülmektedir ancak Swift örneklerde,

func listCaptureDevices(type: String?) -> [AnyObject]! 
{ 

    // Initialize capture session 
    let captureSession = AVCaptureSession() 

    // List all capture devices 
    captureSession.sessionPreset = AVCaptureSessionPresetLow 
    let devices = AVCaptureDevice.devices() 

    if type == nil 
    { 
     return devices 
    } 


    // Filter by device type 
    return devices.filter() { 
     if (device.hasMediaType(type == "audio" ? AVMediaTypeAudio : AVMediaTypeVideo)) 
     { 
      return true 
     } 
    } 

} 

I AnyObject bir parametre olarak esas kabul olduğu görülmektedir:

Benim kodudur. İlk

cevap

3

, AnyObject bir filter yöntemi yoktur. Bu yöntem SequenceType üzerindedir.

Kodunuzda birçok sorun var; Onlardan geçeceğiz. Bu teknik olarak işe yararken

return devices.filter() { 

, buradan () istemiyoruz. Sadece karışıklık yaratır. Bu demek:

return devices.filter { 

sonraki sorun size beyan etmedi device bakın olmasıdır. Büyük olasılıkla kapınıza device in eklemeniz gerekiyordu. Alternatif olarak, öğeye $0 olarak başvurabilirsiniz. Son olarak, kapanışınız yanlış durumda hiçbir şey döndürmez. Her zaman bir şey döndürmek zorundasın. Çözümünüz için

return devices.filter { 
    $0.hasMediaType(type == "audio" ? AVMediaTypeAudio : AVMediaTypeVideo) 
} 
+0

Teşekkürler. Şimdi filtre ve sıralama yöntemlerinin Swift ile nasıl çalıştığını anlıyorum. Örnek olarak bir çekicilik gibi çalışırsınız ve oldukça basittir (sadece bir satır). –

1
return devices.filter() {device in 
    if (device.hasMediaType(type == "audio" ? AVMediaTypeAudio : AVMediaTypeVideo)) 
    { 
     return true 
    } 
    return false 
} 
+0

teşekkür:

Sen bu tüm kolaylaştırabilir. Alternatif bir çözüme sahip olmak iyidir. Bu cihazın, kapsam içine bir dizi eleman gibi çalıştığını görebiliyorum. Çözümünüz ve birincisi sayesinde filtre yönteminin Swift ile nasıl çalıştığını iyi anlıyoruz. –

İlgili konular