inflearn logo
강의

Course

Instructor

Yagom's iOS Programming

5번째 프로젝트 질문입니다

129

taehee81811299

2 asked

0

5번째 프로젝트에서요

다른 코드는 괜찮은데, mainViewController에서 오류가 있습니다.

마지막 부분 decode인데요.

"Cannot invoke 'decode' with an argument list of type '(@escaping (main.ButtonTag) -> AnimalInfo?, from: Data)'"

이러한 말이 뜹니다. 어떻게 해결해야하나요?

//  main.swift
//  What's This?
//
//  Created by Tae-hee on 2020-05-11.
//  Copyright © 2020 Tae-hee. All rights reserved.
//

import UIKit

class main: UIViewController {
   
    //MARK: - Nested Type
    private enum ButtonTag: Int {
        case dog = 101
        case cat, rabbit, hedgehog
    }

    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destination.
        // Pass the selected object to the new view controller.
        guard let button: UIButton = sender as? UIButton else { return }
           
        guard let nextViewController: game = segue.destination as? game else
                {return}
           
        guard let tag: ButtonTag = ButtonTag(rawValue: button.tag) else {
            print("버트의 태그를 enum 변경불가")
            return
        }
           
        guard let info: AnimalInfo = self.AnimalInfo(for: tag) else { return }
           
        nextViewController.AnimalInfo = info
        }
   
       //MARK: Privates
   private func AnimalInfo(for tag: ButtonTag) -> AnimalInfo? {
      
       let assetName: String
      
       switch tag {
       case ButtonTag.dog:
           assetName = "Dog"
       case ButtonTag.cat:
           assetName = "Cat"
       case ButtonTag.rabbit:
           assetName = "Rabbit"
       case ButtonTag.hedgehog:
           assetName = "Hedgehog"
       }
      
    return self.decodeAnimalInfo(from: assetName)
   }
  
    private func decodeAnimalInfo(from assetName: String) -> AnimalInfo? {
        guard let asset: NSDataAsset = NSDataAsset(name: assetName) else {
            print("에셋 로드 실패")
            return nil
        }
       
        do {
            let decoder: PropertyListDecoder = PropertyListDecoder()
            return try decoder.decode(AnimalInfo.self, from: asset.data)
        } catch {
            print("데이터 디코딩 실패")
            print(error.localizedDescription)
            return nil
        }
    }
}

swift ios

Answer 0

강좌소개의 overview

0

368

1

configure 메소드의 DispatchQueue.main

0

342

1

prepareForReuse 사용 방법

0

620

1

화면이 야곰님처럼 로드되지 않아 질문드립니다.

0

375

2

버튼 이미지 크기가 조절이 안 되는데 어떤 부분을 조정해야 할까요?

0

2176

1

코드블록 10-3-5 에러

1

207

0

info에서 자동완성이 나오지 않는데 따로 설정을 해주어야 하는 부분인가요?

0

262

1

star buton

0

361

1

Singleton 관련 질문.

0

250

1

로컬 유저 노티피케이션에서 반복 주기 설정 방법 문의 드립니다.

0

531

0

Todo 앱에서 로컬 노티피케이션 해제 시 질문 드립니다.

0

352

1

ios13이 생기고 변경점 관련

0

204

1

8번 프로젝트

0

189

1

todo 앱에서 파일 저장 기능에 대한 질문입니다.

0

270

1

todo앱 User Notification에서 질문이 있습니다

0

437

1

9번 프로젝트 질문

1

277

2

9번 프로젝트 자료 질문

0

260

1

8번 프로젝트 > 도전과제 2번 질문

0

214

2

Todo 앱에서 일정 추가가 바로 반영되지 않습니다.

1

434

6

Todo 앱에서 DateFormatter 사용 관련 질문 드립니다.

0

289

1

5번 프로젝트 - 나머지 화면 구성하기

1

189

1

웹브라우저 - 코드로 기능 구현하기

1

567

3

어시스던트에 매뉴얼이 없습니다.

0

252

1

제공된 코드블럭 파일

0

243

2