มาดูการทำ modularize กันครับ สืบเนื่องมาจากการที่ผมได้ติดปัญหาว่าจะทำ Framework ให้อยู่ใน workspace เดียวกับ Project ที่กำลังพัฒนา ซึ่งก่อนหน้านี้ก็ทำอยู่แต่ว่าใช้ในการเขียนผ่าน Cocos Pod ซึ่งค่อนข้างยุ่งยากในการ Setup และด้วยปัญหานี้เองผมก็ได้ไปเจอตัวอ่างที่เป็น modularize และเค้าก็ได้เขียนแนะนำใน blog ขอเค้าไว้เป็นภาษาอังกฤษ ผมจึงอยากจะแชร์เป็นภาษาไทยให้สำหรับใครที่ไม่ค่อยแข็งแรงเรื่องภาษาอย่างเช่นตัวผมให้อ่านง่ายและเข้าใจ แต่ถ้าใครไม่ติดเรื่องภาษาก็เข้าไปอ่านที่ original blog ได้ครับเดี๋ยวผมจะแนบ link ไว้ให้
เอาละ! ~เรามาเริ่มกันเลย
สร้าง Workspace
เราจะเริ่มต้นด้วยการสร้าง Workspace เปล่ามาก่อนครับและวางไว้ใน folder ที่เราต้องการก่อน โดยเลือก menu File > New > Workspace
เพื่อไม่ให้สับสนเราจะสร้าง folder ชื่อ MultiProjectWorkspace
ไว้บน Desktop
โดยจะให้เป็นชื่อเดียวกับ Workspace ที่เราสร้างเพื่อไม่สับสนครับ
และเมื่อเราเปิด Workspace ขึ้นมาอย่างพึ่งตกใจว่าทำมันมันเป็นพื้นที่เปล่าๆ ไม่มีอะไรเลยนั้นก็เพราะว่าเราจะต้อง Add Project
ที่เราจะทำงานใน Workspace เข้าไปเองครับ
หน้าตาของ Workspace ที่เราพึ่งสร้างขึ้นมานั้นมันจะยังคงเป็นว่างๆแบบนี้ครับ
เพิ่ม Project เข้าใน Workspace
ที่นี่เรามาสร้าง Project ที่เราจะทำงานกันครับ จะคล้ายกับการสร้าง workspace ข้างบนเลยครับ โดยเลือก menu File > New > Project
จากนั้นให้เลือก Project แบบ Single View App
จากนั้นให้เราเลือก directory ที่เราได้สร้าง workspace ไว้ก่อนหน้านี้ซึ่งจะอยู่ที่ Folder MultiProjectWorkspace
ขั้นต่อไปให้เราเลือกที่ dropdown Add to :…
ด้านล่าง ให้เราเลือก Add to ไปที่ Workspace ที่เราสร้างไว้ ซึ่งที่เราสร้างไว้เป็นชื่อ MultiProjectWorkspace
ขั้นตอนนี้ถ้าเรา create ทันที Project นี้จะกลายเป็น Project ใหม่โดยจะไม่ถูกเพิ่มไปใน workspace ที่เราสร้างไว้
หลังจากที่เลือก target Add to
แล้วกด create หน้าตาโปรแกรมเราก็จะมี project ที่ workspace เป็นคนเิดมันขึ้นมาดังภาพเลยครับ
เพิ่ม Framework project เข้าใน Workspace
มาถึงช่วงที่เราจะนำ project หรือ framework อื่นเข้าไปใน workspace แล้วครับ เราจะทำเหมือนขั้นตอนเดียวกับที่เราเพิ่ม Project เลยครับ แต่คราวนี้เราจะเพิ่ม Framework แทน
ให้เราเลือก Project ที่อยู่ใน Group Framework & Library
ครับแล้วเลือก Cocoa Touch Framework
แล้วกด Next
เหมือนเดิมเลยครับให้เราเลือก directory ที่เราได้สร้าง workspace ไว้ก่อนหน้า แล้วเลือก dropdown Add to
ไปที่ Workspace ที่เราสร้างไว้ จากนั้นก็กด Create ได้เลยครับ
หลังจากเสร็จเรียบร้อยจะเห็นว่าใน workspace ที่เราสร้างนั้น จะมี 2 Project ที่อยู่ในนี้แล้วครับ 😁
ทดสอบ Run Framework กันครับ
ที่นี่เราจะ new class ชื่อ CaomusSDK.swift
ที่เป็น singleton และมีฟังก์ชั่นชื่อ testRun
. สังเกตว่าเราจะประกาศ component ให้เป็น public
เพื่อให้คนอื่นเรียกใช้งาน CaomusSDK framework
ได้ ดังนั้น access modifier จึงต้องเป็น public
Linking the framework to the app
กลับไปที่แอพของเรา เราจะ setting ให้แอพเราเรียกใช้ framework ที่เราสร้างขึ้นมากันครับ
ก่อนอื่นเราต้อง Link framework
กับ Project
ของเราก่อน โดยต้องฝังไว้ใน project ของแอปด้วยเพื่อที่จะได้รวมไว้ในแอพเมื่อเรา build test
ในหน้าจอ workspace เราแค่กดปุ่ม +
ใน Embedded Binaries
เพื่อแสดงหน้าต่าง list framework ขึ้นมา จากนั้นเลือก CaomusSDK.framework
และเนื่องจากเป็นการฝัง framework ใน project. Xcode จะเพิ่มเข้าไปในส่วนของ Linked Frameworks and Libraries
ให้เอง
Run test function กันครับ
เราจะ import CaomusSDK
framework และเรียกใช้ฟังก์ชัน testRun
ที่เป็น singleton ในฟังก์ชั่น viewDidLoad กันครับลองเรียกผ่านแอปและเราจะเห็นผลลัพธ์ต่อไปนี้ใน consloe log : CaomusSDK กำลังทำงานอยู่ 🤩
CaomusSDK กำลังทำงานอยู่ 🤩
เป็นอันเสร็จเรียบร้อยครับสำหรับตัวอย่างการทำงานหลาย project ใน workspace เดียว หากมีประโยชน์ก็ช่วงกันกด claps กด shard กด follow กันด้วยนะครับ แต่หากมีอะไรผิดพลายไปก็ comment แนะนำได้ครับผม
🙏 ขอบคุณทุกคนที่อ่านมาจนจบครับ ☺😊
ตัวอย่าง file นี้ครับ : https://github.com/caomus/MultiProject-Xcode
credit blog : https://objectivetidbits.com/multi-project-setups-fee9d235d857 thanks of tutorial