/AutoGenerationSwiftNameSpace

๐Ÿฎ Swift ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ž๋™ ์ƒ์„ฑ๊ธฐ

Primary LanguagePython

AutoGenerationSwiftNameSpace

๐Ÿฎ ๋‚ด ๋ง˜๋Œ€๋กœ ๋งŒ๋“œ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ž๋™ ์ƒ์„ฑ๊ธฐ(feat. python)

๐Ÿ‘‰ ์™œ ์ด๋ ‡๊ฒŒ ๊นŒ์ง€ ํ•ด์•ผํ•ด? ๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ €๋„ ์ฒ˜์Œ์—๋Š” ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ๊ฑฐ๋“ ์š”.

ํ˜‘์—…์„ ํ•˜๋‹ค๋ณด๋‹ˆ ์„œ๋กœ ํŒŒ์ผ ยท ์—์…‹ ยท ๋ณ€์ˆ˜๋ช…์— ๋Œ€ํ•œ ๋ถ€๋ถ„์„ ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์ด ์ƒ๊ฐ๋ณด๋‹ค ๊นŒ๋‹ค๋กœ์šด ์ž‘์—…์ด๋ผ๋Š” ๊ฒƒ์„ ๋Š๊ผˆ๊ณ ,
๊ฐœ๋ฐœ ํŒŒํŠธ ๋‚ด์—์„œ๋„ ๋” ๋‚˜์•„๊ฐ€ ๋””์ž์ด๋„ˆ, ๊ธฐํš์ž์™€์˜ ํ˜‘์—…์— ์žˆ์–ด์„œ๋„ ์–ด๋Š ์ •๋„ ๋„ค์ด๋ฐ์ด ํ†ต์ผ๋˜์–ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘‰ ๊ทธ๋Ÿฌ๋ฉด ๋˜ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋˜๋Š” ๊ฑฐ ์•„๋‹ˆ์•ผ?, ํ”ผ๊ทธ๋งˆ๋‚˜ ๋…ธ์…˜ ๊ฐ€์ด๋“œ๋ผ์ธ ์žˆ์ž–์•„! ๋ผ๊ณ  ์ƒ๊ฐ์ด ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ

  1. ํ•ด๋‹น ์ž‘์—…์€ ๋งค ๋นŒ๋“œ ์‹œ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ๋ฅผ ๊ฐ€์ ธ์™€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋Œ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ์ƒ์—์„œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋ฉด
    Xcode ํ”„๋กœ์ ํŠธ๋‚ด์—์„œ๋„ ๊ฐ’์ด ๋ฐ”๋กœ ๋ฐ˜์˜์ด ๋˜๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์ผ์ผ์ด ๋ณ€๊ฒฝํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์„ ๋œ์–ด์ค„ ์ˆ˜ ์žˆ์ฃ .
  1. ๋˜ ํ•˜๋‚˜ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์ด ํŒŒํŠธ ๋‚ด์—์„œ ๋„ค์ด๋ฐ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์„ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ๋ฅผ ๋ณด๋ฉด์„œ ๊ฐ™์ด ์–˜๊ธฐํ•ด์„œ ๋ทฐ์ปจ, ์Šคํ† ๋ฆฌ๋ณด๋“œ, ์—์…‹ ๋“ฑ์˜ ๋„ค์ด๋ฐ์„ ํ•˜๊ณ  ์ •๋ฆฌ๋ฅผ ํ•˜๋ฉด
    ์„œ๋กœ ์ •๋ฆฌ๊ฐ€ ๋˜๊ณ  ๋˜, ํ”„๋กœ์ ํŠธ์—๋„ ๋ฐ”๋กœ ๋ฐ˜์˜์ด ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์žฅ์  ๋•Œ๋ฌธ์— ๋‹ค์Œ ํ”„๋กœ์ ํŠธ์— ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•ด๋ณด๋ ค๊ณ  ์ƒ๊ฐ ์ค‘์ด๊ตฌ์š”..๐Ÿ™„
๐Ÿšจ ๊ทผ๋ฐ ๊ทธ๋ƒฅ SwiftGen, R.swift ์“ฐ๋Š”๊ฒŒ ๋” ๋‚˜์„ ๊ฒƒ ๊ฐ™์•„์š” ใ…Žใ…Ž (์ €๋Š” 1,2๋ฒˆ ์žฅ์  ๋•Œ๋ฌธ์— ์“ฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!!)


Usage

1. ๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ

๋„ค์ž„์ŠคํŽ˜์ด์Šค, ์ƒ์ˆ˜๋ผ๊ณ  ๋ถˆ๋ฆฌ์šฐ๋Š” ๊ฐ’๋“ค์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

โ›”๏ธ ํ˜„์žฌ ์ด๋ฏธ์ง€์—์„œ ๋ณด์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ Text, Color, Image, Storyboard, Xib๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
โ›”๏ธ ๊ทธ๋ž˜์„œ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ๋‚ด์šฉ์„ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ๋ฅผ ์ž‘์„ฑํ•˜์‹œ๊ฑฐ๋‚˜, ํŒŒ์ด์ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ผ๋ถ€ ์ˆ˜์ •ํ•ด์„œ ์‚ฌ์šฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-12-25 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 3 28 56

2-1. ํŒŒ์ด์ฌ ํŒŒ์ผ ์ถ”๊ฐ€

์ € ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” script๋ผ๋Š” ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ํ•˜์œ„ ํ•ญ๋ชฉ์œผ๋กœ ํŒŒ์ด์ฌ ํŒŒ์ผ์„ ๋„ฃ์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-12-25 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 3 44 44

2-2. ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ์•„์ด๋”” ์ถ”๊ฐ€

๋ณธ์ธ์ด ๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ์— ์ƒ์„ฑํ•œ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์˜ ์•„์ด๋””๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

generate.py ํŒŒ์ผ์˜ gdoc_id๋กœ ์„ ์–ธ๋œ ๋ถ€๋ถ„์— url์˜ ~/d/ ๋’ท๋ถ€๋ถ„์˜ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-12-26 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 1 25 14

gdoc_id = "1WMnHk1brX7CR34hCN88cDnTDc4UgTAKh-qegwnPIqCU/edit#gid=0"

2-3. Xcode ํŒŒ์ด์ฌ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ ์ถ”๊ฐ€

[Build Phase] - [Run Script] ๋ถ€๋ถ„์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

ex

python ${TARGET_NAME}/script/generate.py ${TARGET_NAME}

3. ์ƒ์„ฑ๋œ ํŒŒ์ผ๊ณผ ํด๋”๋ฅผ Xcode ํ”„๋กœ์ ํŠธ ๋‚ด์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-12-25 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 3 40 24

์ƒ์„ฑ๋œ ํด๋”๋ฅผ ํ”„๋กœ์ ํŠธ ๋‚ด๋กœ ๋“œ๋ž˜๊ทธ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-12-25 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 3 41 41

4. ๊ทธ๋Ÿผ ์˜ˆ์˜๊ฒŒ ์ƒ์„ฑ๋œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค(์ƒ์ˆ˜) ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-12-25 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 3 43 06

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-12-25 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 3 43 21

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-12-25 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 3 43 26

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-12-25 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 3 43 16

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-12-25 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 3 43 12

5. ๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์— ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ž๋™์œผ๋กœ ํ”„๋กœ์ ํŠธ ๋‚ด์˜ ํŒŒ์ผ์—๋„ ๋ฐ˜์˜์ด ๋ฉ๋‹ˆ๋‹ค.


Trouble

python ํŒŒ์ผ์— ์™ธ๋ถ€์—์„œ ์„ค์น˜ํ•˜๋Š” ๋ชจ๋“ˆ์ด ์žˆ์œผ๋ฉด Xcode ์ƒ์—์„œ ์ •์ƒ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
openpyxl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์จ์„œ xlsx ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•˜๋ ค ํ–ˆ์œผ๋‚˜ ๊ทธ๊ฒŒ ๋˜์ง€ ์•Š์•„, ๋‚ด์žฅ ๋ชจ๋“ˆ์ธ csv ๋ชจ๋“ˆ์„ ์ด์šฉํ•ด์„œ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค.


Reference

https://macgongmon.club/m/26

๋‹ค์Œ ๋ธ”๋กœ๊ทธ์—์„œ ์˜๊ฐ์„ ๋ฐ›์•„ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํŒŒ์ด์ฌ ์Šคํฌ๋ฆฝํŠธ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™”์œผ๋ฉฐ, ์ผ๋ถ€๋ถ„๋งŒ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.