๐Ÿง‘โ€๐Ÿ’ป ๋ชจ๊ฐ์ฝ” 3์ฃผ์ฐจ

๐Ÿง‘โ€๐Ÿ’ป ๋ชจ๊ฐ์ฝ” 3์ฃผ์ฐจ

์ด์ „ ๊ธ€ ๐Ÿง‘โ€๐Ÿ’ป ๋ชจ๊ฐ์ฝ” 2์ฃผ์ฐจ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ.

๐Ÿ‘€ ์˜ค๋Š˜์˜ ํ•  ์ผ

  • ์ฃผ๋‹ˆ์–ด ์ฐฝ์ž‘ ๊ฒฝ์ง„๋Œ€ํšŒ ์ฃผ์ œ ๋ฐ”๊พธ๊ธฐ

๐Ÿฃ ์ฃผ๋‹ˆ์–ด ์ฐฝ์ž‘ ๊ฒฝ์ง„๋Œ€ํšŒ ์ฃผ์ œ ๋ฐ”๊พธ๊ธฐ

์ด์ „์— ์ •ํ–ˆ๋˜ Myxtape์•„์ด๋””์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜์˜€์œผ๋‚˜ ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ์— ๋„๋‹ฌํ–ˆ๋‹ค.

technical_problem
๊ทธ๋™์•ˆ์˜ ๊ฒฐ๊ณผ๋ฌผ
final result
์ตœ์ข…์ ์ธ ๊ฒฐ๊ณผ๋ฌผ. ์™ธ๋ถ€ ๋งˆ์ดํฌ ๋…น์Œ๋ฐ–์— ๊ตฌํ˜„์„ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

๊ทธ๊ฐ„ ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ•œ๊ฒƒ์€ ์•„๋‹ˆ์—ˆ๋‹ค. ๋งˆ์ดํฌ๋ฅผ ํ†ตํ•ด ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋…น์Œํ•˜๋Š”๊ฒƒ๊ณผ ๋‚ด๋ถ€์˜ ์†Œ๋ฆฌ, ์ฆ‰ output audio๋ฅผ ๋…น์Œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ๋Š”๋ฐ, ์™ธ๋ถ€ ๋งˆ์ดํฌ ๋…น์Œ์€ ์œ„์˜ ์‚ฌ์ง„์—์„œ ๋ณด์ด๋“ฏ ๋น„๊ต์  ์‰ฝ๊ฒŒ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ–ˆ์ง€๋งŒ, output audio์˜ ๊ฒฝ์šฐ๋Š” API๋กœ ์ œ๊ณต๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์ด์—ˆ๋‹ค. ์ €์ž‘๊ถŒ ๋ฌธ์ œ๋กœ ์ถ”์ •๋˜๋Š” ์ด์œ ๋กœ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค. ์ง€๋‚œ ํ•œ์ฃผ๊ฐ„ ๋งŽ์€ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹œ๋„ํ•ด๋ณด์•˜์ง€๋งŒ, AVAudioEngine์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋ผ๋Š” ์ถ”๋ก ๋งŒ ์žˆ์„ ๋ฟ ๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์–ป๋Š”๊ฑด ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋‹ค. ์ถ”๊ฐ€๋กœ Apple Developer Forum์—์„œ ๊ทธ๋Ÿฐ ๊ธฐ๋Šฅ์€ ๊ตฌํ˜„ํ•˜๋”๋ผ๋„ ์• ํ”Œ ๊ทœ์ •์„ ์œ„๋ฐ˜๋œ๋‹ค๋Š” ๊ธ€์„ ์ฐพ์œผ๋ฉฐ ๊ฒฐ๊ตญ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒฐ๋ก ์— ๋„๋‹ฌํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋ฒˆ ๋ชจ์ž„์—์„œ๋Š” ์•ฑ์„ ๋‹ด๋‹นํ–ˆ๋˜ ๋‚ด๊ฐ€ ํŒ€์›๋“ค์—๊ฒŒ ์ด์ „ ์ฃผ์ œ๊ฐ€ ๊ธฐ์ˆ ์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜์˜€๊ณ , ์˜๊ฒฌ์„ ๋‚˜๋ˆˆ ๋์— ์ฃผ์ œ๋ฅผ ๋ฐ”๊พธ๋Š” ์ชฝ์œผ๋กœ ์˜๊ฒฌ์„ ๋ชจ์•˜๋‹ค. ์›น๊ณผ ์•ฑ์„ ํ†ตํ•ด์„œ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š”๊ฒƒ์ด ๋ฌด์—‡์ด ์žˆ์„๊นŒ ๊ณ ๋ฏผ์„ ํ•˜๋‹ค ์ฒ˜์Œ ์ฃผ์ œ๋กœ ์ •ํ–ˆ๋˜ ์Šค์ผ€์ค„๋Ÿฌ ์ชฝ์œผ๋กœ ์˜๊ฒฌ์ด ๋ชจ์•„์กŒ๋‹ค. ๋‹ฌ๋ ฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ณต์žกํ•œ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์ง€์–‘ํ•˜๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ํ• ์ผ๋งŒ์„ ๋‚˜์—ดํ•˜๋Š” ์‹ฌํ”Œํ•œ To Do List์Šคํƒ€์ผ์˜ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ๋˜ ํ‰์†Œ์— ํ•™๊ณผ ํ™ˆํŽ˜์ด์ง€์˜ ๊ณต์ง€์‚ฌํ•ญ์ด๋‚˜ ํ•™๊ต ๊ณต์ง€์‚ฌํ•ญ์„ ์ง์ ‘ ํ™•์ธํ•˜๋Š”๊ฒƒ์ด ๋ถˆํŽธํ•˜๋‹ค๊ณ  ๋А๊ผˆ์–ด์„œ ์›น ํฌ๋กค๋ง์„ ํ†ตํ•ด ๊ณต์ง€์‚ฌํ•ญ์„ ๊ธ์–ด์™€ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ๋„ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ๋กœ ์˜๊ฒฌ์„ ๋ชจ์•˜๋‹ค. ์ €๋ฒˆ ์•„์ด๋””์–ด๊ฐ€ ํƒ€๋‹น์„ฑ์„ ์ถฉ๋ถ„ํžˆ ๊ฒ€์ฆํ•˜์ง€ ๋ชปํ•œ ์ƒํƒœ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ์‹คํŒจํ–ˆ์œผ๋ฏ€๋กœ, ์ด๋ฒˆ์—” ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ๋งŒ์„ ํƒ€๋‹นํ•œ์ง€ ํ™•์ธํ•ด๊ฐ€๋ฉฐ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

๐Ÿ“€ Json

To Do๋“ค์€ Json์œผ๋กœ ์„œ๋ฒ„์— ์ €์žฅํ•˜์—ฌ ์›น๊ณผ ์•ฑ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. Swift์—์„œ Json์„ ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์™€ ๋””์ฝ”๋”ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ , ์•ฑ์—์„œ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ์„œ๋ฒ„์— ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ์• ํ”Œ ๊ฐœ๋ฐœ์ž ๋„ํ๋จผํŠธ์—์„œ ๊ด€๋ จ๋œ ๋ฌธ์„œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด ๋ฌธ์„œ์— ๋”ฐ๋ผ์„œ Swift PlayGround์—์„œ ๋‚ด ์„œ๋ฒ„์— JsonํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๋Š” ์‹ค์Šต์„ ํ•ด๋ดค๋‹ค.

import Cocoa

struct Order: Codable {
    let customerId: String
    let items: [String]
}

let order = Order(customerId: "12345", items: ["Cheese pizza", "Diet soda"])

let uploadData = try! JSONEncoder().encode(order)

let url = URL(string: "http://MY SERVER IP/json/")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

let task = URLSession.shared.uploadTask(with: request, from: uploadData) { data, response, error in
    if let error = error {
        print ("error: \(error)")
        return
    }
    guard let response = response as? HTTPURLResponse,
        (200...299).contains(response.statusCode) else {
        print ("server error")
        return
    }
    if let mimeType = response.mimeType,
        mimeType == "application/json",
        let data = data,
        let dataString = String(data: data, encoding: .utf8) {
        print ("got data: \(dataString)")
    }
}
task.resume()

์„œ๋ฒ„ ์„ค์ • ๋ฌธ์ œ์ธ์ง€ ๊ฒฐ๊ณผ๋Š” server problem์ด์—ˆ๋‹ค. ๋‹ค๋ฅธ ์ฃผ์†Œ๋ฅผ ์ฃผ์—ˆ์„๋•Œ๋Š” ์—ฐ๊ฒฐ์— ์‹คํŒจํ–ˆ๋‹ค๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ค๋Š”๊ฒƒ์œผ๋กœ ๋ณผ ๋•Œ, ์„œ๋ฒ„์— ์—ฐ๊ฒฐ์€ ๋˜์—ˆ์ง€๋งŒ ์„œ๋ฒ„์—์„œ POST ๊ด€๋ จ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๊ฒƒ์œผ๋กœ ์ถ”์ •๋œ๋‹ค. ๊ด€๋ จ ๋ฌธ์ œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ฐจ์ฐจ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€์•ผ๊ฒ ๋‹ค.

๋‹ค์Œ ๊ธ€ ๐Ÿง‘โ€๐Ÿ’ป ๋ชจ๊ฐ์ฝ” 4์ฃผ์ฐจ๋ณด๋Ÿฌ๊ฐ€๊ธฐ.

Share: Twitter Facebook
Seunghun Yang's Picture

About Seunghun Yang

Seunghun is undergraduate student at Computer Science Engineering in CNU(Chungnam National University).

Daejeon, South Korea

Comments