2017-10-13 21 views
7

Hãy nói rằng chúng tôi có Enum này:tham khảo mơ hồ thành viên 'init (từ :)' cho Enum

enum NumberEnumSpecial: Int32 { 
    case two = 2, three = 3 
} 

Tôi muốn init nó với một Int32, vì vậy tôi sử dụng này:

let myEnum = NumberEnumSpecial.init(rawValue: 2) 

Điều này hoạt động trong một dự án sân chơi nhưng không có trong dự án ứng dụng thông thường của tôi. Tôi nhận được lỗi này cho mã chính xác như nhau:

Ambiguous reference to member 'init(from:)' 

enter image description here

/Users/sjoerd/GitHub/flitsmeister-ios/app/Flitsmeister7/Model/Melding/DangerZone.swift:91:22: error: ambiguous reference to member 'init(from:)' 
     let myEnum = NumberEnumSpecial.init(rawValue: 2) 
        ^~~~~~~~~~~~~~~~~ 
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^
Swift.RawRepresentable:2:24: note: found this candidate 
    public convenience init(from decoder: Decoder) throws 
        ^



Build failed 13/10/2017, 09:32 

Nhấp vào các ứng cử viên không có tác dụng.

Nếu bạn hỏi tôi có vẻ như là một Enum ở đâu đó trong mã với việc triển khai init (từ) gây ra lỗi này trên Enum của tôi. Nhưng tìm kiếm văn bản này cho tôi không có kết quả.

Lỗi này là gì và làm cách nào để tìm hiểu nguyên nhân gây ra lỗi này?

Sử dụng Swift 3.2 và XCode9.0

Hiện nay workaround:

enum NumberEnumSpecial: Int32 { 
    case two = 2, three = 3 

    init?(withSpecialNumber number : Int32) { 
      self.init(rawValue: number) 
    } 
} 
+1

Không thể sinh sản. Bạn có thể hiển thị thông báo lỗi trình biên dịch đầy đủ từ trình điều hướng Báo cáo không? –

+0

Nên có một nút ở đầu bên phải của dòng "Biên dịch DangerZone.swift" để hiển thị các thông điệp trình biên dịch dưới dạng * văn bản. * - Hiển thị văn bản đó chứ không phải ảnh chụp màn hình. –

+0

Nhật ký đầy đủ: https://pastebin.com/18VigRqw –

Trả lời

17

Tôi đã gặp vấn đề tương tự khi sử dụng Xcode 9.2 beta (9C32c), nếu đó là lỗi, nó vẫn chưa được sửa trong phiên bản này. Tôi đã tìm thấy giải pháp thay thế để làm cho lỗi biến mất mà không ghi đè số init.

tôi đã thay đổi này:

NumberEnumSpecial.init(rawValue: 2) 

này:

NumberEnumSpecial(rawValue: 2) 
+2

Đây thực sự là câu trả lời đúng.Trong Swift bạn không gọi phương thức init trực tiếp như trong câu trả lời đầu tiên được gọi là ngầm khi bạn sử dụng mã trong ví dụ thứ hai. –

0

Đây không phải là câu trả lời nhưng tôi nhận ra rằng họ làm việc đúng cách nếu bạn khai báo chúng trong cùng một tập tin có sử dụng chúng. Có thể là một lỗi, có thể là một đầu mối ...

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