Swift로 만든 ToDo 앱 개발 튜토리얼을 보면서 ToDo 앱을 만들었어요.

6837 단어 XcodeSwift
iOS 응용 프로그램 개발(언어도 Objective-C)에서 멀리 떨어진 iOS, Xcode, Swift의 진화 상황도 고정되지 않고 각양각색의 자유도 다르기 때문에 처음부터 공부하고 다음 강좌를 보면서 ToDo 응용 프로그램을 만들어 보려고 합니다.
Swift로 만든 ToDo 어플리케이션 개발 튜토리얼
튜토리얼의 원래 보도는 2015/6, Xcode, Swift 버전도 낡아서 움직이지 않고 넘어진 부분을 열거했다.swift의 기초 지식이 없으면 어쨌든 넘어지면 해결된다.
- 비헤이비어 검증 환경 -
Mac OS X El Capitan 10.11.4
Xcode 7.3.1
Swift 2.2

1.pod 설치 중지


OS와 Xcode를 업데이트했기 때문인 것 같지만, CocoaPods를 사용하여 Magical Record를 설치했을 때pod 설치가 끝나지 않습니다.
$ pod install
Updating local specs repositories
이렇게 하면 된다.
$ pod repo remove master
$ pod setup
$ pod install
참조: pod install은 영원히 끝나지 않습니다.

2. CoreData+MagicalRecord.h file not found


컴파일 오류
Magical Record의 파일 이름이 바뀐 것 같아서 import의 파일 이름을 변경했습니다.
TodoApp-Bridging-Header.h
#import "CoreData+MagicalRecord.h"

TodoApp-Bridging-Header.h
#import "MagicalRecord.h"
참조: Swift를 배우기 위해 ToDo 앱을 만들어 봤습니다.
상기 링크된 기사에서도 같은 튜토리얼에 걸려 넘어진 부분(본 기사의 일부 내용도 중복됨)을 열거하였으며, 원본도 GitHub에 업로드되어 매우 참고 가치가 있다.

3.Downcast from 'UITableViewCell?' to 'UITableViewCell' only unwraps optionals; did you mean to use '!'?


컴파일 오류
Xcode7부터 dequereusableCellWithIdentifier는 항상 선택되지 않은 형식으로 되돌아오는 것 같습니다
TodoListViewController.swift
let cell = tableView.dequeueReusableCellWithIdentifier("TodoListItem") as! UITableViewCell

TodoListViewController.swift
let cell = tableView.dequeueReusableCellWithIdentifier("TodoListItem")
참조: Swift를 배우기 위해 ToDo 앱을 만들어 봤습니다.

4.Value of optional type 'UITableViewCell?' not unwrapped; did you mean to use '!' or '?'?


3. 수정을 한 후 새로운 컴파일 오류가 발생했습니다.
TodoListViewController.swift
let cell = tableView.dequeueReusableCellWithIdentifier("TodoListItem")
cell.textLabel!.text = todoEntities[indexPath.row].item
return cell
↓ 변수 셀!덧붙이다
TodoListViewController.swift
let cell = tableView.dequeueReusableCellWithIdentifier("TodoListItem")
cell!.textLabel!.text = todoEntities[indexPath.row].item
return cell!
참조: Swift를 배우기 위해 ToDo 어플리케이션을 만들어 보았습니다: GitHub

5.CoreData: warning: Unable to load class named 'TodoApp.Todo' for entity 'Todo'. Class not found, using default NSManagedObject instead.


실행 중 오류 발생EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP,subcode=0x0)TodoListViwController.swift
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return todoEntities.count  // ここでEXC_BAD_INSTRUCTION...
}
todo Entities가 nilEXC_BAD_INSTRUCTION..이어서 떨어졌어요.콘솔CoreData: warning: Unable to load class named 'TodoApp.Todo' for entity 'Todo'. Class not found, using default NSManagedObject instead. 오류가 CoreData 오류인 것 같습니다.

해결 방법


CoreData의 Entity 설정에서 TodoApp.xcdatamodeld를 선택하고 데이터 모델 inspector에서 기본 모듈 값 "Current Product Module"삭제

↓ 모듈의 Current Product Module 제거

이렇게 움직였어.
참조: CoreData: warning: Unable to load class named

Swift·Xcode 잡감

  • 묘사가 간결하다.if 조건을 () 로 묶을 필요가 없습니다.행미필요 없음
  • .h와잃어버리다스위프트만 상큼해
  • 선택 가능한 동작을 알 수 없습니다.as?아이고!
  • Xcode의 코드 보충은 상당히 진화했다.입력 오류에도 후보
  • 유판의 View Controller 모양이 정사각형으로 커짐(이전 아이폰의 세로 모양이 더 좋았다)
  • 좋은 웹페이지 즐겨찾기