क्या SwiftUI iOS 12.x और पुराने के साथ पीछे की ओर संगत है?


123

अगर मेरे पास SwiftUI के साथ एक ऐप है, तो क्या यह iOS 13 के नीचे iOS के लिए काम करेगा?


1
आप इसकी कोशिश क्यों नहीं करते? Xcode 11 बीटा डाउनलोड के लिए उपलब्ध है, और ट्यूटोरियल यहां developer.apple.com/tutorials/swiftui हैं
मार्टिन आर


10
नहीं, SwiftUI iOS 12.x & पुराने के साथ काम नहीं करेगा।
11

जवाबों:


89

मैंने अभी इसे Xcode 11 में चेक किया था और पुष्टि कर सकता हूं कि यह पीछे की ओर संगत नहीं होगा, जैसा कि SwiftUI के Viewकार्यान्वयन में देखा जा सकता है :

/// A piece of user interface.
///
/// You create custom views by declaring types that conform to the `View`
/// protocol. Implement the required `body` property to provide the content
/// and behavior for your custom view.
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
public protocol View : _View {

    /// The type of view representing the body of this view.
    ///
    /// When you create a custom view, Swift infers this type from your
    /// implementation of the required `body` property.
    associatedtype Body : View

    /// Declares the content and behavior of this view.
    var body: Self.Body { get }
}

7
कम से कम एक और 5 साल? तो आप इस समय केवल iOS 7 और उसके नीचे उपलब्ध API का उपयोग करते हैं?
डेविड मोनाले

5
सबसे अजीब बात यह है कि आप Moaveave (10.4) पर xcode 11 के साथ एक स्विफ्टयूआई आवेदन कर सकते हैं जो केवल कैटालिना (10.5)
Túlio Calazans

34

मुझे ऐसा नहीं लगता, क्योंकि सभी पुस्तकालयों को पहले से ही iOS 13 या उच्चतर के लिए एनोटेट किया गया है।

इसके अलावा, प्रलेखन में , Apple स्पष्ट रूप से समर्थित संस्करणों का उल्लेख करता है:

  • iOS13.0 + बीटा
  • macOS10.15 + बीटा
  • टीवीओएस 13.0+ बीटा
  • वॉचओएस 6.0+ बीटा

यहां छवि विवरण दर्ज करें


32

SwiftUI और Combine , Swift 5.1 में Opaque-Return-Types का उपयोग करते हैं और चूंकि Opaque-Return-Types (अन्य सुविधाओं के साथ) Swift 5.1 में कार्यान्वित किया जाता है और उनके कार्यान्वयन की प्रकृति के कारण, उन्हें वापस Swift 5.0 ( DSL के विपरीत) में तैनात नहीं किया जा सकता है या प्रॉपर्टी-रैपर ), और क्योंकि iOS 13 सबसे शुरुआती iOS SDK है जिसमें OS में Swift 5.1 रनटाइम है, इसलिए सवाल का जवाब नहीं है और iOS के पुराने संस्करणों पर SwiftUI और Combine का उपयोग नहीं किया जा सकता है।

जब तक, ऐप्पल स्विफ्ट 5.1 रनटाइम (या भविष्य के रिलीज़) को बंडल करने का एक तरीका प्रदान करता है, जैसे कि वह पहले स्विफ्ट संस्करणों के साथ करता था, लेकिन चूंकि यह ऐप-आकार बढ़ाएगा और पूरे सिस्टम में फिर से ओवरहेड जोड़ देगा, मुझे इस पर संदेह है। कभी भी।

यह पिछड़ा संगत हो सकता है

स्विफ्ट 5.1 अभी तक जारी नहीं किया गया है और SwiftUIइसमें अपारदर्शी रिटर्न प्रकार , डीएसएल , प्रॉपर्टीडेलेगेट (डब्ल्यूडब्ल्यूडीसी के रूप में प्रॉपर्टीवेयर ) और आदि जैसी सुविधाओं का उपयोग किया गया है , जो केवल स्विफ्ट 5.1 में उपलब्ध होंगे । चूंकि स्विफ्ट 5 द्विआधारी स्थिर है, मुझे लगता है कि Xcode11 के अंदर एम्बेडेड स्विफ्ट-फ्रेमवर्क का उपयोग करना संभव नहीं था, इसलिए उन्होंने कोको के कोर में इन सुविधाओं को फिर से लागू किया है और उन्हें iOS13 + के रूप में चिह्नित किया है जब तक कि स्विफ्ट 5.1 जारी नहीं हो जाता।

मेरी धारणाएं इस तथ्य पर आधारित हैं कि, ऑर्डर किए गए संग्रह डिफिंग और DSL स्विफ्ट 5.1 में उपलब्ध होने जा रहे हैं और Xcode या Apple के इको-सिस्टम के साथ कोई संबंध नहीं हैं, लेकिन वे भी चिह्नित हैं @available(iOS13,...)। इसका मतलब यह है कि उन्हें iOS उपलब्धता विशेषता के साथ स्विफ्ट 5.1 सुविधाओं का उपयोग करके सब कुछ चिह्नित करना था। स्विफ्ट 5.1 के रिलीज़ होते ही उनमें से कुछ को हटा दिया जाएगा, लेकिन हम इस बारे में सुनिश्चित नहीं हो सकते हैं SwiftUIऔर Combineजब तक कि एप्पल अन्यथा नहीं बताता है। यह डीएसएल के प्रस्ताव में भी उल्लिखित है :

कार्यान्वयन: पीआर । ध्यान दें कि Xcode डेवलपर पूर्वावलोकन में कार्यान्वयन यहां वर्णित की तुलना में कुछ सरल परिवर्तन का उपयोग करता है। लिंक्ड पीआर पूर्वावलोकन में कार्यान्वयन को दर्शाता है लेकिन इस प्रस्ताव से मेल खाने के लिए सक्रिय विकास के अधीन है।

इसलिए जब स्विफ्ट 5.1 जारी किया जाता है तो पिछड़ी असंगतता सीमा को हटाया जा सकता है, लेकिन इसे वास्तव में Apple टीम द्वारा स्पष्ट करने की आवश्यकता है


1
इस पर किसी भी अद्यतन? आपके द्वारा उल्लेखित पीआर विलय किया गया है, स्विफ्ट 5.1 जारी किया गया है
user158

@ user158 मैंने सिर्फ उत्तर को अपडेट किया और बताया कि इस सुविधा का समर्थन क्यों नहीं किया जा सकता है।
फरजदशफ़्फ़न

15

नहीं। SwiftUI को iOS 13 या बाद में, macOS 10.15 या बाद में, TVOS 13 या बाद के संस्करण, या 6 या उससे अधिक के तैनाती लक्ष्य की आवश्यकता है। फ्रेमवर्क में कई नए प्रकार शामिल हैं जो OS के पुराने संस्करणों पर मौजूद नहीं हैं।


कम तैनाती लक्ष्य का समर्थन करते हुए iOS 13 पर SwiftUI का उपयोग करना संभव है। कृपया stackoverflow.com/a/58372597/840742
Renatus

13

यदि आप iPhone का समर्थन करने के लिए शूटिंग कर रहे हैं और iPad नहीं है तो आप शायद उम्मीद कर सकते हैं कि अधिकांश उपयोगकर्ता 12-18 महीनों (रिलीज की तारीख के साथ) में iOS 13 में अपग्रेड करेंगे। शायद 85-90%? (मुझे लगता है कि इस बिंदु पर Apple ने कहा कि अभी भी 15% लोग iOS 12 पर नहीं हैं) यह अभी भी काफी समय है, हालांकि जहाँ आप अभी तक स्विफ्टयूआई ऐप को तैनात करने में सक्षम नहीं हैं या बहुत सारे उपयोगकर्ताओं को अलग करने का जोखिम उठाते हैं।

यह भी निर्भर करता है कि अन्य 10-15% क्या है, इसका मतलब है कि आपके लिए बहुत सारे उपयोगकर्ता (और $ $) टेबल पर छोड़ दिए गए हैं।

यदि आप iPad का समर्थन कर रहे हैं, तो इसके और अधिक मुश्किल है क्योंकि लोग अक्सर अपने iPads को अपग्रेड नहीं करते हैं। 3 जी और 4 वीं पीढ़ी के आईपैड के साथ बहुत से आईपैड 2s अभी भी जंगली में हैं, जिसमें केवल 10.3.3 हैं और अब और अपग्रेड नहीं कर सकते हैं। जब लोग पूरी तरह से ठीक काम करते हैं, तो लोग बस एक नए iPad के लिए $ 400 - $ 1,000 के बीच उठने और जाने का भुगतान नहीं करते हैं।

वहाँ हमेशा कमरे और अनुप्रयोग को अद्यतन करने के लिए एक की जरूरत है, यह बेहतर बनाने, कीड़े फिक्सिंग, कि जरूरी नहीं कि iOS 13. के साथ कुछ करना है, यानी एक बग को खोजने से पहले जिसके बारे में आपको पता नहीं था कि बहुत से उपयोगकर्ता नाखुश हैं। नवीनतम iOS संस्करण पर नहीं। और हम उद्यम / कॉर्पोरेट ग्राहकों के बारे में भी बात नहीं कर रहे हैं जो बहुत सी देव दुकानों का समर्थन करते हैं। उस क्षेत्र में विभिन्न कारणों से iOS अपडेट पर बहुत अधिक पुशबैक करता है।

इससे पहले कि आप iOS 13 और स्विफ्टयूआई के बारे में पूरी तरह से उत्साहित हो जाएं (जो आपको पूरी तरह से चाहिए क्योंकि इसका कमाल), असली दुनिया में वापस, सिलिकॉन वैली के बाहर, यह बिल्कुल वैसा ही नहीं है जैसा कि औसत उपभोक्ता को उम्मीद है और आपको समर्थन करने की आवश्यकता होगी पुराने उपकरणों और की जरूरत है क्योंकि theres सिर्फ बहुत से लोगों को आप विमुख हो जाएगा।


1
मैं "असमर्थित" iPhones पर बहुत से लोगों को जानता हूं, इसलिए आप नवीनतम iOS रिलीज के लिए कभी भी 100% तक नहीं पहुंचेंगे। मुझे पता है कि मैं अपने अगले फोन के बारे में लंबे समय तक सोचता रहूंगा जब मेरा वर्तमान एक मर जाएगा
गेविन

@cspam जबकि आपकी धारणाएँ शायद सही हैं, लेकिन वे इस सवाल का जवाब नहीं देते हैं।
user1892364

iOS 12 ने 10% से अधिक उपकरणों के लिए समर्थन नहीं छोड़ा, इसलिए यह कहना मुश्किल है कि क्या हम iOS 13. के लिए समान गोद लेने की दर की उम्मीद कर सकते हैं
Casper Zandbergen

SwiftUI को पुराने उपकरणों का समर्थन करने की आवश्यकता होगी और इसलिए कि आपको बहुत से लोगों को अलग- थलग करना होगा! अंगूठा
ट्रेवर

9

Apple प्रलेखन के आधार पर यह केवल iOS 13 के साथ शुरू होता है, दुर्भाग्य से।

https://developer.apple.com/documentation/swiftui/


लिंक किए गए सभी दस्तावेज़ कहते हैं कि आपको iOS 13 SDK (यानी Xcode 11) का उपयोग करने की आवश्यकता है। यही कारण है कि इसका मतलब यह नहीं न्यूनतम समर्थित डिवाइस का iOS संस्करण आईओएस 13 ... आप पुराने iOS संस्करण ठीक समर्थन कर सकते हैं हो गया है ...
दरिद्र

9

यह iOS 13+ के साथ संगत है। यहाँ इसके प्रलेखन का लिंक दिया गया है।

https://developer.apple.com/documentation/swiftui/


यहां तक ​​कि Xcode 10 भी इसका समर्थन नहीं करता है। आपको Xcode 11 का उपयोग करने की आवश्यकता है जो बीटा में है (Jun 3 2019)। https://developer.apple.com/tutorials/swiftui/creating-and-combining-views


6

केवल ios 13 या उसके बाद के लिए काम करता है

आप अभी भी SwiftUIउपयोग करके अपना कोड संलग्न कर सकते हैं

@available(iOS 13.0, *)

अगर आप अभी भी Xcode 11 के नीचे Xcode का उपयोग कर रहे हैं और SwiftUI कोड है, तो आप इसे लपेट सकते हैं

#if canImport(SwiftUI)
...
#endif

Xcode 11 के नीचे Xcode के साथ संकलन करने पर यह समस्या को ठीक कर सकता है


4

जैसा कि सभी ने कहा है, यह पुराने iOS संस्करणों के साथ पीछे की ओर संगत नहीं होगा। लेकिन यह देखते हुए कि Apple के पास लगातार अपने नवीनतम iOS का उच्च इंस्टॉल बेस है, और यह भी कि iOS 13 के लिए iPhone 6S या बाद में, iPad Air 2 या बाद में, नए iPad मिनी 4 और iPhone SE की आवश्यकता होती है। उपयोगकर्ताओं के विशाल बहुमत iOS 13 को स्थापित करने और सुंदर SwiftUI एप्लिकेशन का आनंद लेने में सक्षम होंगे।


3
मेरा iPad आईओएस 13 के लिए कटौती नहीं करता है, और यह अभी भी मजबूत हो रहा है और कुछ समय के लिए इसे बदलने की उम्मीद कर रहा है (मुझे उम्मीद है) कि मुझे लगता है कि जिन ऐप्स का मैं आनंद लेता हूं / जरूरत नहीं है वे पुराने डिवाइसों को आकर्षित करते हैं।
गैविन

3

जैसा कि मेरे उल्लेख से पहले सभी लोग, यह बहुत स्पष्ट है कि इसे iOS 13 या बाद के संस्करण की आवश्यकता होगी। लेकिन एक नए iOS डेवलपर के रूप में, मैं इस बात को लेकर चिंतित था कि मुझे UIKit की तुलना में स्विफ्टयूआई को किस हद तक अपनाना चाहिए। मैंने पहले से ही UIKit के साथ कुछ छोटे प्रोजेक्ट बनाए, और कहीं न कहीं इसके साथ आगे बढ़ा।

लेकिन जैसा कि स्विफ्टयूआई ने शुरू किया, उनके बीच गठबंधन कैसे किया जाए। निम्नलिखित लिंक में लेख सभी संदर्भ में डालता है: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both

अब मेरी एकमात्र चिंता यह है कि मैंने Xcode 11 के साथ देखा कि एक Xcode प्रोजेक्ट स्टोरीबोर्ड और स्विफ्टयूआई दोनों को संयोजित नहीं कर सकता है।


3

अफसोस की बात है कि, SwiftUI को केवल iOS 13 और इसके बाद के संस्करण की अनुमति है। इसे iOS 13 फ्रेमवर्क में पेश किया गया था। IOS 13 से पहले, सब कुछ ओबज-सी फ्रेमवर्क (स्विफ्ट सहित) का उपयोग करके बनाया गया था।

देव प्रलेखन के दाईं ओर, यह iOS, macOS, tvOS, watchOS, आदि के समर्थित संस्करणों को दिखाता है।

https://developer.apple.com/documentation/swiftui/

उम्मीद है की यह मदद करेगा!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.