मेरे पास निम्न कोड है जो स्विफ्ट 2 में संकलित करता है लेकिन स्विफ्ट 4.2 में नहीं होगा। बूलियन लौटाने वाला रेंज फ़ंक्शन अब कैलेंडर डेटा प्रकार का हिस्सा नहीं है, हालांकि यह NSCalendar डेटा प्रकार का एक हिस्सा है। क्या कोई तरीका है जिससे मैं इस फ़ंक्शन को स्विफ्ट 4.2 में संकलित करने के लिए उपयोग या प्रारूपित कर सकता हूं?

extension Calendar {
    /**
     Returns a tuple containing the start and end dates for the week that the
     specified date falls in.
     */
    func weekDatesForDate(date: NSDate) -> (start: NSDate, end: NSDate) {
        var interval: TimeInterval = 0
        var start: NSDate?
        range(of: .weekOfYear, start: &start, interval: &interval, for: date as Date)
        let end = start!.addingTimeInterval(interval)

        return (start!, end)
    }
}

मैंने निम्नलिखित की कोशिश की है हालांकि रेंज फ़ंक्शन समान नहीं है और संकलित नहीं करता है:

extension NSCalendar {
    /**
     Returns a tuple containing the start and end dates for the week that the
     specified date falls in.
     */
    func weekDatesForDate(date: NSDate) -> (start: NSDate, end: NSDate) {
        var interval: TimeInterval = 0
        var start: NSDate?
        range(of: .weekOfYear, start: &start, interval: &interval, for: date as Date)
        let end = start!.addingTimeInterval(interval)

        return (start!, end)
    }
}
2
Laurence Wingo 20 अक्टूबर 2018, 08:23

1 उत्तर

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

range(of:start:interval:for:) के बराबर Calendar में dateInterval(of:start:interval:for:) है

स्विफ्ट में NSDate का प्रयोग न करें

extension Calendar {
    /**
     Returns a tuple containing the start and end dates for the week that the
     specified date falls in.
     */
    func weekDatesForDate(date: Date) -> (start: Date, end: Date) {
        var interval: TimeInterval = 0
        var start = Date()
        dateInterval(of: .weekOfYear, start: &start, interval: &interval, for: date)
        let end = start.addingTimeInterval(interval)

        return (start, end)
    }
}

मैं टुपल के बजाय समर्पित DateInterval को वापसी मूल्य के रूप में उपयोग करने की सलाह देता हूं:

extension Calendar {
    /**
     Returns a tuple containing the start and end dates for the week that the
     specified date falls in.
     */
    func weekDatesForDate(date: Date) -> DateInterval {
        var interval: TimeInterval = 0
        var start = Date()
        dateInterval(of: .weekOfYear, start: &start, interval: &interval, for: date)
        let end = start.addingTimeInterval(interval)
        return DateInterval(start: start, end: end)
    }
}
2
vadian 20 अक्टूबर 2018, 05:32