2016-11-01 12 views
7

वहाँ Xcode 8 या 8.1 में किसी भी तरह से एक परियोजना में एक एकल फाइल कि पहले से ही स्विफ्ट 3 करने के लिए परिवर्तित किया गया है के लिए एक Swift 2.X -> Swift 3 प्रवास करने के लिए है?एकल फ़ाइल को एक्सकोड 8 में स्विफ्ट 3 में कनवर्ट करें?

तकनीकी ऋण/विरासत निर्माण प्रक्रिया कारणों से, हम वर्तमान में हमारे परियोजना के दोनों Xcode 7 और Xcode 8 संस्करणों को बनाए रखना पड़ रहा है। यह सिरदर्द पैदा कर रहा है जब हमें Xcode 7 से Xcode 8 पर नए विकास को मर्ज करना होगा। चूंकि परियोजना को Swift 3 में हमारे Xcode 8 शाखा (हाथों के फ़िक्स सहित) में पूरी तरह से परिवर्तित कर दिया गया है, इसलिए हम पूर्ण-प्रोजेक्ट स्वचालित कनवर्टर का उपयोग नहीं कर सकते हैं। इसलिए हमें वर्तमान में Swift 2.2 से Swift 3 से किसी भी नए Swift फ़ाइलों के लिए हाथ रूपांतरण करना है जो Xcode 7 में जोड़े गए थे, जो काफी समय लेता है।

अगर मैं पहले से ही पूछा गया है, तो मैं क्षमा चाहता हूं, मुझे Google के साथ कोई स्पष्ट उत्तर नहीं मिला।

उत्तर

2

मेरे पास एक से अधिक लक्ष्य वाले प्रोजेक्ट हैं जहां प्रत्येक लक्ष्य स्विफ्ट के साथ ओपनजीएल का उपयोग करने का थोड़ा और उन्नत संस्करण है। यदि आप करेंगे तो यह एकाधिक प्रोजेक्ट्स वाला एक प्रोजेक्ट है। जब तेज़ 3 उपलब्ध हो गया, तो मैंने कनवर्टर का उपयोग किया, और देखा कि यह प्रति लक्ष्य आधार पर काम करता है। इस बात को ध्यान में रखते हुए मैं सुझाव देता हूं:

  1. प्रोजेक्ट में एक गूंगा लक्ष्य बनाएं।
  2. ऐसी कोई भी फाइल जोड़ें जिसे आप इस लक्ष्य में अपडेट करना चाहते हैं।
  3. वार्तालाप संपादक
  4. सहयोगी या उन फ़ाइलों को अपने पहले से परिवर्तित लक्ष्य में वापस रखें।

मुझे एहसास है कि यह एक हैक का थोड़ा सा है, लेकिन अगर यह काम करता है, तो क्यों नहीं? उम्मीद है की वो मदद करदे।

एक तरफ ध्यान दें, यदि आप Unsafe[Mutable]Pointer के साथ काम कर किसी भी कोड है और आपको alloc() या malloc(), उपयोग कनवर्टर alloc()/malloc() नई UnsafeMutablePointer विधियों allocate() और initialize() साथ प्रतिस्थापित नहीं करता। यदि आप किसी भी सी एपीआई के साथ काम कर रहे हैं तो आप इनका उपयोग कर रहे हैं।

+0

जो लोग नीचे मतदान करते हैं, क्या मैं पूछ सकता हूं क्यों? यह एक व्यवहार्य उत्तर है। – Buggy

+0

सहमत नहीं है, आदर्श नहीं है, अभी यह सबसे अच्छा दृष्टिकोण की तरह लगता है। – Jimmy

2

एक सोचा (untested) project.pbxproj से लाइनों

LastSwiftMigration = 0800; 

और/या

SWIFT_VERSION = 3.0; 

हटा सकते हैं और देखें कि Xcode आप migrator फिर से उपयोग करने की अनुमति देता है। माइग्रेटर चलाने के बाद उन पंक्तियों को जोड़ा गया था।

फिर यदि यह काम करता है, तो जाहिर है, आपको उन सभी फ़ाइलों को अचयनित करने की आवश्यकता है जिन्हें आप माइग्रेट नहीं करना चाहते हैं।

वैसे भी मैं वैसे भी सोच सकता हूं।

संबंधित मुद्दे