2016-10-22 25 views
8

için Int 3 dönüşüm, String yapı String bir Int dönüşüm sağlayacak bir başlatıcı init(_: Int) sahip görünmemektedir. Sorum şu: Neden let i = String(3) çalışıyor? String yöntemi veya başlatıcısı ne arıyor? Teşekkürler.Swift 3 String

cevap

9

String sınıfının init(_:) (veya UnsignedInteger için init(_:)) bağımsız değişkenlerini çağırıyor. bir SignedInteger için türlerini ve UnsignedInteger türleri için: biri

Aksine için ayrı başlatıcıları tanımlamak yerine Int, Int64, Int32, Int16, Int8, UInt, UInt64, UInt32, UInt16 ve UInt8 Apple iki jenerik başlatıcıları yaptı. Herkes

29

sadece Swift 3'te dizesine bir int dönüştürmek isteyen: Bu çözümü gördüm

Swift 3 Strings isteğe bağlı Tamsayılar dönüştürmek isteyenler için
let text = "\(myInt)" 
+0

Yanıtınız –

+3

yorum ile anlaşmak ele almadi ama bu seni – Josh

+0

sayesinde aradığı şeyi bana yardımcı etmedi !!!! –

5

,

String(describing:YourInteger ?? 0) 
+1

Beni tarif etmeye geçmek için beni uyardı Swift derleyici oldu, ben değil! ben değilim! – satheeshwaran

0

birine, teşekkür ederim, o kişiye, kim olduğunu hatırlamıyorum. Örneğin

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() 
    } 
} 

:

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

Bunu nasıl uygulayacağınızı açıklar mısınız lütfen? –

+0

UtilsView.swift'im var, bu kütüphanede tüm projelerde kullandığım başka işlevler var. Bir işlev, infix operatörü ???: NilCoalescingPrecedence genel func ??? (isteğe bağlı T ?, defaultValue: @autoclosure() -> String) -> Yaylı { anahtarı isteğe { durum değeri String (tanımlayan: değeri) geri ?: izin durumda nil defaultValue() } geri} – Mercedes