大家好,我是彼得潘,我將在 3 月推出兩門 iOS App 課程,分別針對有程式背景和無程式基礎的學生。我會一步一步慢慢教,搭配溫暖的冷笑話,帶著你開心地從無到有創作出自己的 App,歡迎有興趣的朋友們參考。有任何 iOS App 開發或程式設計的相關問題,也都歡迎跟我聯絡,謝謝。

Image for post
Image for post


開發 iOS App 時,我們時常使用 tab bar controller & navigation controller 串接多個頁面,比方以下唐詩 App 的範例:

Image for post
Image for post

點選李白顯示李白的作品。


Image for post
Image for post

最近彼得潘研究了台灣 iOS 工程師的工作職缺,參考 104,CakeResume,Yourator,meet.jobs 等網站列出的技術需求,整理出以下找 iOS 工作的基本條件 & 加分條件,歡迎想成為 Swift iOS App 工程師的朋友參考。

基本條件

  • Swift 程式語言
  • Xcode
  • 熟悉物件導向(object-oriented,OOP)
  • Auto Layout
  • MVC 架構
  • 熟悉常用的 iOS SDK,UIKit &Cocoa Touch Framework
  • 熟悉 view controller 的生命週期
  • 串接後台的 RESTful API & JSON 解析
  • 英文技術文件閱讀能力
  • 熟悉 multithread programming,比方 GCD & NSOperation
  • 從 storyboard, …


當我們建立 Xcode 專案時,有很多欄位要設定,其中的 Organization Identifier & Bundle Identifier 代表什麼意思呢 ?

Image for post
Image for post

如上圖所示,預設 Bundle Identifier 將等於 Organization Identifier 加 Product Name,因此 com.peter 加 Demo 變成 com.peter.Demo。


Image for post
Image for post

開發 iOS App 時,我們最擔心的莫過於沒有使用者。沒關係,透過 Random User Generator,我們可以產生隨機的 user,一秒鐘就可以生出 500 個 user 。

以下是這次模擬面試的功能需求,歡迎有興趣的朋友參考。

基本功能需求

  • 搭配取得單一 user 的 API
https://randomuser.me/api/
  • 印出 first name, last name, street number, street name。
  • 點選 button 隨機 user,將 first name, last name, street number, street name 顯示在 App 畫面。
  • 使用 SwiftUI 或 UIKit 製做畫面,UIKit 版本須搭配 auto layout。
  • 顯示 lar …


開發 iOS App 時,我們時常串接 API 抓取 JSON 資料。不過寫 code 寫多了,難免遇到 bug,有時在 JSONDecoder 解析 JSON 時會遇到問題。此時我們通常有兩種解法:

解法1: 研究 JSONDecoder 告訴我們的錯誤訊息

解法2: 將 JSON Data 變成字串,研究 JSON 資料是否有問題

假設原本抓取 JSON 的程式如下,在不改動程式的前提下,我們可以利用中斷點將 JSON Data 變成字串顯示。

struct SearchResponse: Codable {
let resultCount: Int
let results: [StoreItem]
}
struct StoreItem: Codable {
let artistName: String
let trackName: String
}
class ViewController: UI …


安裝 Node.js 時就會同時安裝 NPM,因此以下我們將示範如何在 Mac 安裝 Node.js。

連到 Node.js 網站

下載 LTS 的版本

Image for post
Image for post

雙擊下載的 pkg 檔安裝 Node.js


Image for post
Image for post

在之前的文章裡,我們認識了 SwiftUI @State 的基本用法,接下來讓我們認識更多關於 @State 的故事。

State 搭配 Int,Double,String,Bool,Array 等基本的 value type

  • 搭配 Int
struct ContentView: View {
@State private var number = 1

var body: some View {
Button(action: {
number = Int.random(in: 1...6)
}, label: {
Image(systemName: "die.face.\(number).fill")
.resizable()
. …


Xcode 開啟 JSON 檔不是問題,但是當它遇到很大的 JSON 檔時,它將需要花很久很久的時間。

因此若有開啟較大的 JSON 檔的需求時,建議使用以下連結的 Dadroit JSON Viewer,開啟的速度將快很多很多。

除了速度外,它也多了一些方便的功能。比方點選展開 / 折疊

Image for post
Image for post

Expand All(展開全部) & Collapse All(折疊全部)

彼得潘的 iOS App Neverland

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store