อย่างไรก็ตามฉันได้คอมไพล์กรอบงานใหม่โดยใช้ Xcode เดียวกันและยังคงให้ข้อผิดพลาดนี้แก่ฉัน
- Base SDK iOS 11.1 สำหรับทั้งคู่
- เวอร์ชันภาษา Swift Swift 4.0 สำหรับทั้งคู่
- ไม่ใช้ Pods / Carthage
ฉันหวังว่าจะมีคนรู้
อย่างไรก็ตามฉันได้คอมไพล์กรอบงานใหม่โดยใช้ Xcode เดียวกันและยังคงให้ข้อผิดพลาดนี้แก่ฉัน
ฉันหวังว่าจะมีคนรู้
คำตอบ:
อัปเดต:
สำหรับ Xcode รุ่นที่วางจำหน่าย:
ข้อผิดพลาดนี้ (และข้อผิดพลาดที่คล้ายกันเกี่ยวกับ Swift 4.1, 4.2 และอื่น ๆ ) จะเกิดขึ้นเมื่อเปิดโปรเจ็กต์ด้วย Xcode 9.1, 9.2, 9.3, 9.4, 10 ฯลฯ ที่ใช้เฟรมเวิร์กที่สร้างขึ้นด้วยเครื่องมือ Xcode รุ่นก่อนหน้า
ในการแก้ไขปัญหาให้อัปเดตและสร้างเฟรมเวิร์กใหม่โดยใช้ Carthage ( carthage update --platform iOS
), Cocoapods ( pod update
หรือpod install
) หรือด้วยตนเองด้วยเครื่องมือ Xcode ที่อัปเดตใหม่ ควรอัปเดตเครื่องมือโดยอัตโนมัติเมื่อคุณอัปเดต Xcode แต่หากไม่เป็นเช่นนั้นคุณสามารถทำตามขั้นตอนที่ระบุไว้ด้านล่างในคำตอบเดิม
คุณอาจต้องล้างโปรเจ็กต์ของคุณcmd + shift + k
และอาจเป็นโฟลเดอร์cmd + option + shift + k
บิลด์ของคุณเพื่อรับ Xcode เพื่อไม่ใช้บิลด์เฟรมเวิร์กที่แคชไว้
ในบางกรณีคุณอาจต้องลบโฟลเดอร์ข้อมูลที่ได้รับของคุณ (พบได้ง่ายโดยไปที่ Xcode Preferences -> Locations -> Derived Data Folder ( ขอบคุณ Stunner )
สำหรับ Xcode รุ่นเบต้า:
ดูคำตอบเดิมด้านล่างจากนั้นทำตามขั้นตอนด้านบน
คำตอบเดิม:
คุณอาจยังมีเครื่องมือ xcodebuild ของคุณที่ตั้งค่าเป็น Xcode 9.0 ซึ่งสร้างด้วย Swift 4.0 และเข้ากันไม่ได้กับ Swift 4.0.1 ของ Xcode 9.1 beta
ตรวจสอบในเทอร์มินัลโดยใช้คำสั่ง:
xcodebuild -version
หรือไปที่การตั้งค่า Xcode -> สถานที่และตรวจสอบ / เปลี่ยนเครื่องมือบรรทัดคำสั่งเป็น Xcode 9.1 คุณควรตั้งค่าแล้ว
Swift Language Version
ไปSwift 4
สำหรับผู้ที่ จากนั้นก็ใช้งานได้
ปัญหาของฉันเกิดจากเฟรมเวิร์กภายนอกไม่ได้รวบรวมสำหรับ Swift 4.0.2 ฉันได้เพิ่มไฟล์นี้ผ่านCarthageแล้วดังนั้นการรัน:
carthage update --platform iOS
จากนั้นทำความสะอาดโปรเจ็กต์cmd + shift + k
และสร้างโฟลเดอร์cmd + option + shift + k
และลบโฟลเดอร์ข้อมูลที่ได้รับ (เพียงแค่ย้ายไปที่ถังขยะก็ใช้ได้เช่นกัน)
ในกรณีของฉันฉันดาวน์โหลด xCode 11 เวอร์ชันเบต้าเพื่อทดสอบ SwiftUI เมื่อฉันรันโปรเจ็กต์ฉันได้รับข้อผิดพลาด"โมดูลที่คอมไพล์ด้วย Swift 5.1 ไม่สามารถนำเข้าโดยคอมไพเลอร์ Swift 5.0.1: ... "
เพื่อแก้ไขปัญหานี้ ฉันเปลี่ยนเครื่องมือบรรทัดคำสั่ง xCode เป็นเครื่องมือบรรทัดความคิดเห็น xCode 11 ใหม่ หลังจากนั้นคุณสามารถสร้างโครงการ xcode ใหม่ด้วย SwiftUI
Xcode -> ค่ากำหนด -> ตำแหน่ง -> เครื่องมือบรรทัดคำสั่ง XCode
ฉันหวังว่านี่จะช่วยคนที่ต้องการทดสอบ freamework ใหม่ :)
ติดตั้ง Xcode toolchain เฉพาะรุ่น Xcode ซึ่งทำงานให้กับคุณจากที่นี่
Xcode toolchain ประกอบด้วยสำเนาของคอมไพเลอร์ lldb และเครื่องมือที่เกี่ยวข้องอื่น ๆ ที่จำเป็นเพื่อมอบประสบการณ์การพัฒนาที่สอดคล้องกันสำหรับการทำงานใน Swift เวอร์ชันเฉพาะ
เปิดการตั้งค่าของ Xcode ไปที่ Components> Toolchains และเลือก Swift toolchain ที่ติดตั้ง
ซึ่งจะช่วยให้คุณสามารถรวบรวมและเรียกใช้แอปได้ในตอนนี้
ฉันพบปัญหานี้กับ Xcode 10 beta ซึ่งเพิ่ม Swift 4.2 ปัญหาของฉันไม่เกี่ยวข้องกับ Carthage หรือการอ้างอิงภายนอกใด ๆ
ไปที่YourTarget > Build Settings > Swift Language Version
เป้าหมาย Xcode ทั้งหมดของคุณ
Swift 4
เหมืองแร่ทั้งหมดถูกตั้งค่าให้
หลังจากเพิ่ม Copy Files Build Phase แล้วฉันเริ่มได้รับข้อผิดพลาด
: 0: ข้อผิดพลาด: ไม่สามารถนำเข้าโมดูลที่คอมไพล์ด้วย Swift 4.1.2 โดยคอมไพเลอร์ Swift 4.2: /Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build/Debug/ MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule
คำสั่ง MergeSwiftModule ล้มเหลวด้วยรหัสออกที่ไม่ใช่ศูนย์
จากนั้นผมก็ตั้งเป้าแต่ละของSwift Language Version
การSwift 4.2
ซึ่งกำจัดข้อผิดพลาด
ฉันไม่แน่ใจว่าเหตุใดจึงเกิดข้อผิดพลาดตั้งแต่แรกเนื่องจากการตั้งเป้าหมายทั้งหมดSwift 4
ควรจะถูกต้องเท่ากัน
Build Settings
ในกรณีของฉัน (Xcode 9.2):
ฉันไปที่ Xcode Preferences > Locations > Derived Data
จากนั้นฉันก็ลบข้อมูลและสร้างใหม่ทั้งหมดและก็โอเค
ในกรณีของฉันฉันใช้ CocoaPods กับปลั๊กอินcocoapods-binary
เพื่อสร้างไลบรารีล่วงหน้าเป็นไบนารี หลังจากที่ฉันอัปเกรด Xcode จาก 10 เป็น 11 Xcode ให้ข้อผิดพลาดนี้แก่ฉัน:
Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler
ฉันจะแก้ไขได้โดยการลบไดเรกทอรีและทำงาน/Pods
pod install
ในกรณีของฉันฉันรวบรวมเฟรมเวิร์กใหม่โดยใช้เวอร์ชันใดก็ตามที่บ่น
ในการคอมไพล์ใหม่เรียกใช้pod update
หรืออัปเดตคาร์เธจ (ที่คุณเคยใช้อยู่) และสร้างโปรเจ็กต์
จากนั้นค้นหากรอบในตัวค้นหา คัดลอกและวางลงในtheFramework.framework
โครงการของคุณและอย่าลืม "คัดลอกรายการหากจำเป็น" สร้างโครงการอีกครั้งและควรใช้งานได้