2015-06-17 13 views
10

Tôi mới sử dụng Swift. Tôi thừa kế một dự án. Tôi thấy nó đang chạy trên một thiết bị. Tuy nhiên, khi tôi kiểm tra mã và nó có nhiều lỗi. Tôi đã có thể xóa các lỗi. Tuy nhiên, tôi chạy vào một trong đó là baffling tôi. Dự án cũng sử dụng các tệp xib. Đây là mã.Swift, super.init() Phải gọi một initializer được chỉ định của lỗi superclass 'UIView'

required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
    } 

    init(items:NSArray, viewController:AnyObject){ 
     super.init() 
     //itemsArray = items 
     itemsArray = items as [AnyObject] 
     //commonInit(viewController as UIViewController) 
     commonInit(viewController as! UIViewController) 
    } 

tôi nhận được lỗi dưới init (hạng mục: NSArray, viewController: AnyObject) phương pháp/chức năng. Lỗi được trỏ đến "super.init()". Nó tuyên bố "Phải gọi một trình khởi tạo được chỉ định của lỗi" UIView "của siêu lớp học"

Tôi đang tìm kiếm, googling, hỏi người khác và không có gì bật lên. Tôi có thể nhận trợ giúp về việc sửa lỗi này hay ít nhất là tại sao lỗi này xảy ra? Tôi muốn hiểu vì vậy tôi có thể trở thành một nhà phát triển phần mềm tốt hơn.

Chỉnh sửa: Tôi muốn cảm ơn mọi người vì sự thấu hiểu và trợ giúp của họ. Tôi phát hiện ra vấn đề lớn hơn. Tôi đã thực hiện các thay đổi được đề xuất trong super.init (frame: CGRect). Tôi đã phải thay đổi một thuộc tính mảng cũng đã ảnh hưởng đến chức năng init.

+3

cố gắng thay đổi super.init() trong self.init() – Andrea

+0

@Andrea nhờ anh chàng của tôi –

Trả lời

3

Khi thông báo lỗi cho thấy bạn chỉ có thể gọi trình khởi tạo được chỉ định của lớp cha.

Để giải quyết điều này, bạn cần phải gọi: super.init(frame: frame) thay vì super.init()

8

UIView 's định initializers là:

init(frame: CGRect) 
init(coder aDecoder: NSCoder) 

Bạn đang gọi điện thoại super.init() mà là một initializer kế thừa từ lớp cha của nó NSObject. Sử dụng một trong những initialisers thay vì trình biên dịch được đề xuất.

+15

Câu trả lời này không thực sự cung cấp thêm thông tin nào ngoài thông báo lỗi. – shieldstroy

+0

đồng ý với @shieldstroy – Confused

Các vấn đề liên quan