วิธีหลีกเลี่ยงการนำเข้า Framework เดียวกันในทุกไฟล์ที่รวดเร็ว

มีวิธีนำเข้าไลบรารีสองสามไลบรารีในทุกไฟล์หรือไม่? โดยไม่ต้องวางเป็นกรอบ

เช่นแทนที่จะต้องทำ

--MySwiftFile.swift--

import UIKit 
import Foundation
import ...

ฉันสามารถทำอะไรบางอย่างเช่น:

--SharedImports.swift--

import UIKit 
import Foundation
import ...

--MySwiftFile.swift--

import SharedImports.swift

person Edward Ashak    schedule 22.03.2016    source แหล่งที่มา


คำตอบ (1)


คำตอบคือ "ไม่ และนั่นเป็นความตั้งใจ" แต่ละไฟล์จำเป็นต้องทราบบริบทของโค้ดที่มีอยู่ในไฟล์นั้น มันได้รับบริบทนั้นจากชุดการนำเข้า

ในกรณีเฉพาะของ UIKit และ Foundation ควรเป็นกรณีที่ UIKit นำเข้า Foundation ดังนั้นฉันไม่คิดว่าคุณจะต้องเรียกทั้งสองอย่างชัดเจนในทุกไฟล์ ในตัวอย่างข้างต้น คุณควรจะผ่านพ้นไปได้ด้วยเพียง

import UIKit

มีบางครั้งในการกำหนดโมเดลแอปพลิเคชันของคุณ ซึ่งคุณอาจต้องการให้ไฟล์เข้ามา Foundation ไม่ใช่ UIKit

person Scott Thompson    schedule 22.03.2016
comment
ฉันยกทั้งสองไว้เป็นตัวอย่าง แต่คุณพูดถูก จะเกิดอะไรขึ้นถ้าฉันมีกรอบงานท้องถิ่นในโครงการของฉันและในกรอบงานไลบรารีเหล่านี้ถูกนำเข้า ฉันยังต้องนำเข้าอย่างชัดเจนใช่ไหม - person Edward Ashak; 23.03.2016
comment
ใช่. แต่ละไฟล์จะถูกคอมไพล์เป็นหน่วยแยกกัน และแต่ละหน่วยจำเป็นต้องมีบริบทที่สมบูรณ์เพื่อทราบว่าโค้ดในหน่วยนั้นมีอะไรบ้าง - person Scott Thompson; 23.03.2016
comment
ยังไงก็ตามมี PrefixHeader.pch คุณสามารถแก้ไขปัญหาชั่วคราวได้: สร้างไฟล์ Objective-C เพิ่มไลบรารีทั้งหมดที่คุณต้องการนำเข้าทุกที่ไปยัง PrefixHeader.pch จากนั้นนำเข้าไฟล์ Objective-C นี้ผ่าน BridgingHeader... เพื่อให้แน่ใจว่าทำได้และคำตอบที่แน่ชัดว่า NO ผิด - person Adas Lesniak; 17.03.2019