toString()
Bir sınıf örneğinin durumunu yazdırmak için Java'nın Swift eşdeğeri nedir ?
toString()
Bir sınıf örneğinin durumunu yazdırmak için Java'nın Swift eşdeğeri nedir ?
Yanıtlar:
description
Mülkiyet aradığınız budur. Bu, bir nesne içeren bir değişkeni yazdırdığınızda erişilen özelliktir.
description
Protokolü benimseyerek CustomStringConvertible
ve ardından description
özelliği uygulayarak kendi sınıflarınıza ekleme yapabilirsiniz .
class MyClass: CustomStringConvertible {
var val = 17
public var description: String { return "MyClass: \(val)" }
}
let myobj = MyClass()
myobj.val = 12
print(myobj) // "MyClass: 12"
description
yapıcıyı çağırdığınızda da kullanılır String
:
let str = String(myobj) // str == "MyClass: 12"
Bu, örnek açıklamasına erişmek için önerilen yöntemdir (bunun tersine, myobj.description
bir sınıf uygulanmazsa işe yaramaz CustomStringConvertible
)
String(obj)
?
.debugDescription
bir daha programcı dostu versiyon için
Kullanmalısınız String(obj)
.
Doğrudan CustomStringConvertible belgelerinden :
NOT
String (örnek), herhangi bir türden bir örnek için çalışacak ve örnek CustomStringConvertible olursa açıklamasını döndürecektir. CustomStringConvertible'ı genel bir kısıtlama olarak kullanmak veya uygun bir türün açıklamasına doğrudan erişmek bu nedenle önerilmez.
description()
Metodu CustomStringConvertible
yeterli olacak gibi görünüyor .
NSObject
Genişletilmiş sınıflarla nasıl yapılırModel sınıfınız 'den genişletilmişse NSObject
, Değişkeni description
aşağıdaki gibi geçersiz kılmanız gerekir :
public override var description: String {
return "\n{\n index: \(self.index),\n"
+ " country: \(self.name),\n"
+ " isoCountryCode: \(self.isoCountryCode),\n"
+ " localeId: \(self.localeId),\n"
+ " flagImageName: \(self.flagImageName!)\n}"
}
Sen bunu yapmış nasıl kontrol edebilirsiniz içinde burada Country
sınıfında yer, "CountryPicker iOS Swift kütüphanesinde" .
Veya anlamanızı kolaylaştırmak için sınıfınız ve description
yönteminiz aşağıdaki gibi görünmelidir:
public class MyClass: NSObject {
public var memberAttribute = "I'm an attribute"
public override var description: String {
return "My Class member: \(self.memberAttribute)"
}
}
Not:
Modal sınıfınızı bundan genişlettiğiniz için artık sınıfınızın sınıfa NSObject
uymasını gerektirmez CustomStringConvertible
ve description
değişkeni NSObject
sınıfın kendisinden geçersiz kılıyorsunuz . Her zaman hatırlayın, CustomStringConvertible
bunu başarmanın çoğunlukla saf Swift yolu olduğunu.