2015-02-02 13 views
9

aşağıdaki hatayı üretmek için yanlış yapıyorum anlamaya gibi olamaz: BuradaSwift adlı NSInputStream alt sınıfı için başarısız (initWithData: seçicinin unrecognizer)

2015-02-02 12:48:17.029 InputStreams[14816:221224] -[InputStreams.CustomStream initWithData:]: unrecognized selector sent to instance 0x7fda2e1aac30 

benim CustomStream alt sınıfıdır. Herhangi bir yardım büyük takdir

import UIKit 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let stream = CustomStream(data: NSData()) 
     println("Stream Name: \(stream.streamName)") 
    } 
} 

:

import Foundation 

class CustomStream : NSInputStream { 
    let streamName = "My Custom Stream" 

    override init(data: NSData) { 
     super.init(data: data) 
    } 
} 

Ve burada bunu oluşturmaya çalışıyorum nasıl hızlı bir örnek.

+0

Yani bunun bir hata olduğunu düşünüyoruz? Bunun birçok güne açık olduğu gerçeği göz önüne alındığında, bir radarı dosyalama zamanı geldiğini düşünüyorum. – cnoon

+1

Aşağıdaki [radar] 'a başvurdum (http://openradar.appspot.com/radar?id=45043590983838384). Aynı sorun varsa lütfen dupe. Eğer bunu yapmazsan, lütfen yardım et! – cnoon

+0

Aynı sorunla karşılaştım. Açıkçası, ayrıca, alt sınıflamanın tüm amacı muhtemelen bunlardan herhangi birini kullanmak istemediğimde, belirlenen başlatıcılarından birini (ör. "NSData" veya "NSURL") çağırmam gereken bir hata olarak da vurur. Açıkçası, "NSInputStream" alt sınıflaması her zaman sorunlu olmuştur (bkz. Http://blog.bjhomer.com/2011/04/subclassing-nsinputstream.html), ancak son 8 yılda bu konuya baktıklarını umuyordum (http://lists.apple.com/archives/macnetworkprog/2007/May/msg00056.html). – Rob

cevap

0

convinence init kullanarak bir çözüm buldum. o works.I Bu konuda herhangi bir fikir varsa bir yorum bırakın bilgilerini daha Class Inheritance and Initialization bahsediyorum neden

class CustomStream : NSInputStream { 
    let streamName = "My Custom Stream" 
    // var data:NSData!   

    convenience override init(data: NSData) { 
     self.init() 
     // do inialization. 
     // self.data = data 
    } 

    convenience init() { 
     self.init() 
    } 
} 

ben çözemedim Dürüst olmak gerekirse.

Bir şey daha, successfully.The kodu burada ALAssetToNSInputStream kullanılabilir hem yollarla başarıyla ALAssetNSInputStream dönüştürmek için çalıştık CFCreateBounderPair kullanmak yerine NSInputStream .I alt sınıfı için daha güvenli olarak kabul edilir.

İlgili konular