2016-10-22 27 views
8

Trong Swift 3, cấu trúc String dường như không có bộ khởi tạo init(_: Int) cho phép chuyển đổi từ Int thành String. Câu hỏi của tôi là tại sao let i = String(3) hoạt động? Phương thức khởi tạo hoặc phương thức khởi tạo String nào? Cảm ơn.Chuyển đổi Swift 3 từ Int thành String

Trả lời

9

Gọi số init(_:) (hoặc init(_:) cho UnsignedInteger) đối số của lớp String.

Thay vì xác định initializers riêng cho Int, Int64, Int32, Int16, Int8, UInt, UInt64, UInt32, UInt16, và UInt8, Apple thực hiện hai initializers chung: một cho SignedInteger loại, và một cho UnsignedInteger loại.

29

Đối với bất cứ ai chỉ tìm cách để chuyển đổi một int để chuỗi trong Swift 3:

let text = "\(myInt)" 
+0

phản ứng của bạn không giải quyết các câu hỏi –

+3

đồng ý với những nhận xét nhưng điều này đã giúp tôi với những gì tôi đang tìm kiếm – Josh

+0

cảm ơn bạn !!!! –

5

Đối với những người muốn chuyển đổi số nguyên tùy chọn để Strings trên Swift 3,

String(describing:YourInteger ?? 0) 
+1

Đó là trình biên dịch Swift đã nhắc tôi chuyển sang mô tả, không phải tôi! không phải tôi! – satheeshwaran

0

tôi thấy giải pháp này với ai đó, cảm ơn bạn, với người đó, tôi không nhớ ai.

infix operator ???: NilCoalescingPrecedence 

public func ???<T>(optional: T?, defaultValue: @autoclosure() -> String) -> String { 
    switch optional { 
    case let value?: return String(describing: value) 
    case nil: return defaultValue() 
    } 
} 

Ví dụ:

let text = "\(yourInteger ??? "0")" 
+0

Bạn có thể giải thích về cách thực hiện điều đó không? –

+0

Tôi có UtilsView.swift, trong thư viện này tôi có các chức năng khác mà tôi sử dụng trong tất cả các dự án. Một hàm là, toán tử infix ???: NilCoalescingPrecedence public func ??? (không bắt buộc: T ?, defaultValue: @autoclosure() -> String) -> String { chuyển đổi tùy chọn { trường hợp để cho giá trị ?: trở String (mô tả: giá trị) trường hợp nil: return defaultValue() }} – Mercedes

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