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:
descriptionMülkiyet aradığınız budur. Bu, bir nesne içeren bir değişkeni yazdırdığınızda erişilen özelliktir.
descriptionProtokolü benimseyerek CustomStringConvertibleve 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"
descriptionyapı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.descriptionbir sınıf uygulanmazsa işe yaramaz CustomStringConvertible)
String(obj)?
.debugDescriptionbir 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 CustomStringConvertibleyeterli olacak gibi görünüyor .
NSObjectGenişletilmiş sınıflarla nasıl yapılırModel sınıfınız 'den genişletilmişse NSObject, Değişkeni descriptionaş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 Countrysınıfında yer, "CountryPicker iOS Swift kütüphanesinde" .
Veya anlamanızı kolaylaştırmak için sınıfınız ve descriptionyö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 NSObjectuymasını gerektirmez CustomStringConvertibleve descriptiondeğişkeni NSObjectsınıfın kendisinden geçersiz kılıyorsunuz . Her zaman hatırlayın, CustomStringConvertiblebunu başarmanın çoğunlukla saf Swift yolu olduğunu.