क्या स्विफ्टयूआई में एक वैकल्पिक इंट को एक स्ट्रिंग में डालने और इसे प्रदर्शित करने का एक आसान तरीका है?

आदर्श रूप से nil की जांच किए बिना 0 का डिफ़ॉल्ट Int होने पर भी?

var body: some View {
    HStack {
        workout.duration != nil ? Text(String(workout.duration ?? 0)) : nil
    }
}
0
denski 3 सितंबर 2021, 21:08

2 जवाब

सबसे बढ़िया उत्तर

कुछ उदाहरण, पहले डिफ़ॉल्ट विकल्प के साथ इंट को खोलना

 Text("\(workDuration ?? 0)")

दूसरा मामला डिफ़ॉल्ट टेक्स्ट नहीं दिखाना है, और ऑब्जेक्ट टेक्स्ट नहीं बनाना है (पैडिंग, संशोधक सहयोगी)

 if let workDuration != nil { Text("\(workDuration ?? 0)") }

जॉर्ज द्वारा सुझाए गए तीसरे अधिक सुरुचिपूर्ण, दूसरे विकल्प के समान

 if let workDuration = workDuration { Text("\(workDuration)") }

चौथा, रॉब नेपियर की टिप्पणी के बाद, अपने मॉडल को खोलना

  struct Workout {
    var duration: Int?
    var durationDescription : String {
         "\(duration ?? 0)"
    }
  }
  
  struct ContentView: View {
    let workout = Workout(duration: 33) //sample

    var body: some View {
       Text("\(workout.durationDescription)")
    }
 }


 
  
1
dig 3 सितंबर 2021, 20:22

एक्सटेंशन का उपयोग करके यहां एक और तरीका होगा:

extension Optional {
  func safeUnwrap(_ defaultValue: Wrapped) -> Wrapped {
    self ?? defaultValue
  }
}

// use case:

var body: some View {
    HStack {
        Text(String(describing: workout.duration.safeUnwrap(0)))  // <<: Here!
    }
}
0
swiftPunk 3 सितंबर 2021, 19:14