<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
<channel>
<title><![CDATA[ AppCoda 中文版 ]]></title>
<description><![CDATA[ 我們專注提供 iOS App 開發教學書籍及課程。透過「Learn by Doing」的教學模式，將艱澀的程式概念變得容易明白。已有超過 25,000位讀者透過我們的程式教學書籍學習 Swift 和 iOS 程式設計。 ]]></description>
<link>https://www.appcoda.com.tw</link>
<image>
    <url>https://www.appcoda.com.tw/favicon.png</url>
    <title>AppCoda 中文版</title>
    <link>https://www.appcoda.com.tw</link>
</image>
<lastBuildDate>Fri, 01 May 2026 10:04:41 +0800</lastBuildDate>
<atom:link href="https://www.appcoda.com.tw" rel="self" type="application/rss+xml"/>
<ttl>60</ttl>

    <item>
        <title><![CDATA[ 如何在 SwiftUI App 中開發 Live Activities ]]></title>
        <description><![CDATA[ Live Activities 首次於 iOS 16 推出，是 Apple 最令人興奮的更新之一，能讓 App 與使用者在即時互動上更有連結。它不再需要使用者不斷打開 App，Live Activities 可以讓資訊直接顯示在鎖定畫面和 Dynamic Island 上。無論是追蹤外送進度、查看比賽比分，或是監測目標的完成進度，這個功能都能讓重要資訊一目了然。 在 iOS 17 中，Apple 進一步擴展了 Live Activities，支援從伺服器端推送更新，使其在需要即時資訊的 App 中更強大。但即使沒有伺服器推送更新，Live Activities 對於需要在用戶端提升互動、及時提供回饋的 App 來說，也非常有用。 在這個教學中，我們會透過建立一個 Water Tracker App 來學習如何實作 ]]></description>
        <link>https://www.appcoda.com.tw/live-activities/</link>
        <guid isPermaLink="false">68ad2a4dd485d0cb54685e22</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Tue, 26 Aug 2025 12:46:23 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1663373460374-d78ee5369fd5?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGR5bmFtaWMlMjBpc2xhbmQlMjBpcGhvbmV8ZW58MHx8fHwxNzU2MTEyNDM3fDA&amp;ixlib&#x3D;rb-4.1.0&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 App Intents 在 SwiftUI App 中新增捷徑與 Siri 支援 ]]></title>
        <description><![CDATA[ 你是否曾經想過，如何讓 App 的功能可以直接從 iOS 內建的「捷徑」(Shortcuts) App 使用？這正是 App Intents 框架的用途。自 iOS 16 和 macOS Ventura 推出以來，這個框架已經存在兩年多，為開發者提供了一種強大的方式來定義可透過捷徑觸發的動作。藉由 App Intents，你的 App 可以無縫整合到捷徑 App、Siri，甚至是系統層級的 Spotlight 搜尋中。 在這篇教學中，我們將示範如何使用 App Intents 框架，將 App 的功能帶入捷徑，並建立一個 App Shortcut。以 Ask Me Anything App ]]></description>
        <link>https://www.appcoda.com.tw/app-intents-shortcuts/</link>
        <guid isPermaLink="false">689f0155d485d0cb54685daf</guid>
        <category><![CDATA[ Swift ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Fri, 15 Aug 2025 18:22:41 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1726587912062-0e5b1be8a6ee?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDE3fHxpcGhvbmUlMjAxNnxlbnwwfHx8fDE3NTUyNDYwNzN8MA&amp;ixlib&#x3D;rb-4.1.0&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 使用 Tool Calling 強化 Foundation Models 功能 ]]></title>
        <description><![CDATA[ 在前幾篇教學中，我們介紹了 Foundation Models 在 iOS 26 中的運作方式，以及如何使用這個全新框架打造具備 AI 功能的應用。我們也介紹了 @Generable 巨集，它能輕鬆地將模型回應轉換為結構化的 Swift 類型。 現在，在這個 Foundation Models 系列的第三篇，我們要深入探討另一個強大的功能：Tool Calling。這個功能讓語言模型可以呼叫你 App 中的函式，來執行任務、擷取資料，或根據使用者輸入觸發操作。 裝置端語言模型無法回答所有問題，特別是需要即時資料的問題，例如目前天氣或最新股價。在其他情境下，你也可能希望模型能存取 App 中的資料來提供更準確的回應。這時就能用上 Tool Calling，它讓模型能將特定任務委派給 App 的函式或外部 API。 在這篇教學中，我們會繼續開發 Ask Me Anything ]]></description>
        <link>https://www.appcoda.com.tw/tool-calling/</link>
        <guid isPermaLink="false">688862f0d485d0cb54685d7c</guid>
        <category><![CDATA[ AI ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Tue, 29 Jul 2025 14:15:27 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1730212426715-f0189e690149?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDN8fHNpcml8ZW58MHx8fHwxNzUzNzY4OTcxfDA&amp;ixlib&#x3D;rb-4.1.0&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 活用 Foundation Models 的 @Generable 與 @Guide 製作測驗 App ]]></title>
        <description><![CDATA[ 在前一篇教學中，我們介紹了 Foundation Models 框架，並示範了如何用它來進行基本的內容生成。那個過程相當簡單——你提供一個提示詞（prompt），等幾秒鐘，就能獲得自然語言的回應。在我們的範例中，我們建立了一個簡單的問答 App，讓使用者可以提問，App 則直接顯示生成的文字。 但如果回應變得更複雜——你需要把非結構化文字轉換為結構化的物件呢？ 舉例來說，假設你請模型產生一個食譜，然後你想把回應轉換成一個 Recipe 物件，裡面包含 name、ingredients 和 instructions 等屬性。 難道你需要手動解析文字並將每個欄位對應到資料模型嗎？ iOS 26 中的 Foundation Models 框架提供了兩個強大的新巨集：@Generable 和 @Guide，可以幫助開發者簡化這個流程。 在這篇教學中，我們將探索這些巨集的運作方式，以及如何利用它們從模型回應中直接產生結構化資料。 範例 App我們將建立一個簡單的測驗 App，用來展示如何使用 Foundation Models ]]></description>
        <link>https://www.appcoda.com.tw/generable/</link>
        <guid isPermaLink="false">6879fd94d485d0cb54685d49</guid>
        <category><![CDATA[ AI ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Fri, 18 Jul 2025 16:03:48 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1750637215837-31d990af2495?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDN8fGlvcyUyMDI2fGVufDB8fHx8MTc1MjgyNTc4N3ww&amp;ixlib&#x3D;rb-4.1.0&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 26 全新 Foundation Models：教你一步步加入 AI 功能 ]]></title>
        <description><![CDATA[ 在 iOS 26 中，Apple 推出了 Foundation Models 框架，一個隱私優先、可在裝置上執行的 AI 工具組，讓 Apple Intelligence 背後的語言模型可以直接用於你的應用中。這個框架可在 iOS、macOS、iPadOS 和 visionOS 等平台使用，並提供一個簡潔的 Swift API，讓開發者能輕鬆整合先進 AI 功能。 與需要網路連線、在雲端伺服器上運行的 LLM（像是 ChatGPT 或 Claude）不同，Apple 的語言模型是設計來完全在本地裝置執行的。這種架構帶來了獨特的優勢：所有資料都保留在使用者的裝置上，確保隱私、更低延遲，以及離線可用性。 這個框架讓你可以立即建立各種智慧功能：產生與摘要內容、分類資訊，甚至打造語意搜尋與個人化學習體驗。不論你想製作智慧型的應用內導覽、 ]]></description>
        <link>https://www.appcoda.com.tw/foundation-models/</link>
        <guid isPermaLink="false">6870e6b6d485d0cb54685cd3</guid>
        <category><![CDATA[ AI ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Fri, 11 Jul 2025 18:48:55 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1710993012099-07a400b7e6b4?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDU3fHxpb3MlMjAyNnxlbnwwfHx8fDE3NTIyMzA4MjR8MA&amp;ixlib&#x3D;rb-4.1.0&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 26 新功能： SwiftUI 的 WebView 與 WebPage ]]></title>
        <description><![CDATA[ 在 iOS 26 中，SwiftUI 終於推出了其中一個最受期待的元件：WebView，一個原生的解決方案用來顯示網頁內容。在這個更新之前，SwiftUI 開發者必須依賴 UIKit 框架，透過 UIViewRepresentable 包裝 WKWebView 或 SFSafariViewController 來嵌入網頁檢視。隨著 WebView 的推出，Apple 現在提供了一個完整的原生 SwiftUI 方式來整合網頁瀏覽功能進入應用程式中。在這篇教學中，我會快速介紹新的 WebView，並示範如何在你自己的應用中使用它。 WebView 的基本用法要使用新的 WebView 載入網頁，你只需匯入 WebKit 框架，並以網址建立這個檢視。以下是範例程式碼： import SwiftUI import WebKit struct ContentView: View {     var body: some ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-webview/</link>
        <guid isPermaLink="false">68620f15d485d0cb54685c9b</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Mon, 30 Jun 2025 13:25:47 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1749650646156-452624a35dbd?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDF8fGlvcyUyMDI2fGVufDB8fHx8MTc1MTI2MDA1OXww&amp;ixlib&#x3D;rb-4.1.0&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 探索 ImagePlayground：iOS 18 中的 AI 影像生成技術 ]]></title>
        <description><![CDATA[ 隨著 iOS 18 的推出，Apple 揭露了 Apple Intelligence 旗下一系列令人興奮的功能，其中最引人注目的就是 ImagePlayground 框架。這個強大的 API 讓開發者能夠利用 AI 從文字描述中生成影像，為 iOS 應用程式開啟了無限的創意可能。不論你是打造設計工具、故事創作應用程式，或只是想為使用者介面增添一些特色，ImagePlayground 都能讓 AI 驅動的影像生成無縫融入你的應用中。 在本教學中，我們將帶你使用 SwiftUI 和 ImagePlayground 框架打造一個簡單的應用程式。這個應用程式能讓使用者輸入描述，例如「日落時的寧靜海灘」，然後輕觸一下即可生成對應的影像。本指南專為有一定 iOS 經驗的開發者設計，假設你已熟悉 Swift、SwiftUI 和 Xcode 的基礎知識。準備好探索 iOS 18 的影像生成功能了嗎？ ]]></description>
        <link>https://www.appcoda.com.tw/imageplaygroundsheet/</link>
        <guid isPermaLink="false">67c91acfd485d0cb54685c48</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Thu, 06 Mar 2025 12:05:09 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2025/03/imageplayground-featured-1.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 18 新API：使用 Navigation Transition 創建 Hero 動畫式過場 ]]></title>
        <description><![CDATA[ Apple 的工程師可能早已認識到，許多 iOS 開發者都希望能夠重現 App Store 應用程式中的優雅 Hero 動畫。由於從頭實現這種動畫通常需要耗費大量時間與精力，Apple 在 iOS 18 SDK 中納入了這項功能。 透過這次更新，你現在只需少量的程式碼就能在自己的應用程式中實現類似的動畫過渡效果。這項重大改進讓開發者能夠創造出更具視覺吸引力且流暢的過渡效果，進而提升應用程式的整體使用者體驗。 在本教程中，我們將探討如何利用新的 NavigationTransition 協定（protocol）以及 matchedTransitionSource 修飾符來在視圖過渡期間創建 Hero 動畫。 簡單的示範應用程式讓我們透過一個示範應用程式來探索這些新 API。我們將從一個顯示咖啡廳列表的標準捲動視圖開始。我們的目標是實現一個功能，讓使用者點擊咖啡廳後，能夠進入顯示完整圖片的新畫面，並伴隨 Hero 動畫效果。 使用 Navigation Transition 協定要顯示完整圖片並使用 Hero 動畫來進行視圖過場，可以按照以下步驟進行： 將捲動視圖嵌入到導航堆疊（navigation stack） ]]></description>
        <link>https://www.appcoda.com.tw/navigation-transition/</link>
        <guid isPermaLink="false">66e3b05a47612a03a6c59d28</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Fri, 13 Sep 2024 11:28:28 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1524293772845-840102eccb82?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDUwfHxhbmltYXRpb24lMjBpcGhvbmV8ZW58MHx8fHwxNzI2MTk4MDQ3fDA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何使用 Vision APIs 從圖像中辨識文字 ]]></title>
        <description><![CDATA[ Vision 框架長期以來一直包含文字識別功能。我們已經有詳細的教程，向你展示如何使用 Vision 框架掃描圖像並執行文字識別。之前，我們使用了 VNImageRequestHandler 和 VNRecognizeTextRequest 來從圖像中提取文字。 多年來，Vision 框架已經顯著演變。在 iOS 18 中，Vision 引入了利用 Swift 6 新功能的 API。在本教程中，我們將探索如何使用這些新 API 來執行文字辨識。你會驚訝於框架的改進，它節省了大量程式碼來實現相同的功能。 一如既往，我們將創建一個示範 App 來引導你使用這些 API。我們將構建一個簡單的 App，允許用戶從照片庫中選擇圖像，應用程序將即時提取其中的文字。 讓我們開始吧。 使用 PhotosPicker 加載照片庫假設你已經在 Xcode 16 上創建了一個新的 SwiftUI 項目，轉到 ]]></description>
        <link>https://www.appcoda.com.tw/vision-text-recognition/</link>
        <guid isPermaLink="false">66a092c747612a03a6c59d05</guid>
        <category><![CDATA[ AI ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 24 Jul 2024 13:39:46 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1592496031762-230d5a32f6eb?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDEwOXx8dGV4dCUyMG9uJTIwaXBob25lfGVufDB8fHx8MTcyMTgwMDI5OXww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 使用最新的 Translation API 為 iOS Apps 加入翻譯功能 ]]></title>
        <description><![CDATA[ iOS 已經包含了一個系統範圍的翻譯功能，允許用戶輕鬆地將文本翻譯成各種語言。隨著 iOS 17.4（以及 iOS 18）的發布，你現在可以利用新的 Translation API 將這個強大的翻譯功能整合到你的應用中。 Apple 為開發者提供了兩種使用 Translation API 的選擇。最快且最簡單的方法是使用 .translationPresentation 修飾器，它會在你的應用中顯示一個翻譯覆蓋層。對於更靈活的解決方案，你可以直接調用 Translation API 來構建自定義的翻譯功能。 在本教程中，我們將探討這兩種方法，並通過一個簡單的示例應用來引導你實現它們。請注意，你需要 Xcode 16 來跟隨本教程。 使用 translationPresentation 修飾器讓我們從最簡單的方法開始：.translationPresentation 修飾器。在 Safari 中，用戶可以突出顯示任何文本以訪問翻譯選項，然後顯示帶有翻譯文本的翻譯覆蓋層。 如果你想將這個翻譯覆蓋層帶到你的應用中，你只需導入 Translation ]]></description>
        <link>https://www.appcoda.com.tw/translation-api/</link>
        <guid isPermaLink="false">6677d33347612a03a6c59cbd</guid>
        <category><![CDATA[ AI ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Mon, 24 Jun 2024 16:39:02 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1605170439002-90845e8c0137?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDF8fGhlbGxvJTIwaXBob25lfGVufDB8fHx8MTcxOTIxODI4OHww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 18更新：SwiftUI 新功能介紹 ]]></title>
        <description><![CDATA[ SwiftUI的技術不斷演進，每次更新都讓 iOS 應用程式開發變得更加便捷。隨著 iOS 18 Beta 的推出，SwiftUI 引入了多個令人興奮的新功能，使開發者僅需幾行程式碼即可實現出色的效果。 本教學文章旨在探索這個版本中的幾項主要改進，幫助你了解如何運用這些新功能。 浮動標籤列 (Floating Tab Bar)SwiftUI中的標籤視圖（Tab View）已大大增強，新增了浮動標籤列。此新功能可以輕鬆轉換為側邊欄，為用戶提供訪問應用完整功能的直觀方式。 在iPad上，用戶可以通過點擊標籤列上的側邊欄按鈕將標籤列轉換為側邊欄。對於開發者來說，如果你想支持這個功能，只需一行程式碼。你只需將標籤視圖樣式設定為 .sidebarAdaptable： struct ContentView: View {     @State var customization = TabViewCustomization()          var body: some View {         TabView {             Tab("Home", systemImage: "house.fill") {                              }                          Tab( ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-ios-18/</link>
        <guid isPermaLink="false">6673ab8347612a03a6c59c8b</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Thu, 20 Jun 2024 12:27:08 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1629757509637-7c99379d6d26?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDQ4fHxjb2Rpbmd8ZW58MHx8fHwxNzE4ODU3NDU1fDA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 使用 Google Gemini 和 SwiftUI 建立一個 AI 圖像識別應用程式 ]]></title>
        <description><![CDATA[ 在這個教學中，我們將展示如何使用 Google Gemini APIs 進行影像識別。這個簡單的應用程式允許用戶從照片庫中選擇一張圖片，並使用 Gemini 來描述該照片的內容。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-image-recognition/</link>
        <guid isPermaLink="false">6645839147612a03a6c59c4f</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Thu, 16 May 2024 12:06:01 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1614162692292-7ac56d7f7f1e?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDN8fHBvcnNjaGUlMjA5MTF8ZW58MHx8fHwxNzE1ODMyNDExfDA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何使用 Swift 整合 Google Gemini AI ]]></title>
        <description><![CDATA[ 在即將到來的 WWDC，Apple 預計將會發佈一個本地端的大型語言模型 (LLM)。 接下來的 iOS SDK 版本將讓開發者更輕易地整合 AI 功能至他們的應用程式中。然而，當我們正在等待 Apple 推出自家的生成 AI 模型時，其他公司（如 OpenAI 和 Google）已經提供了 SDK 讓 iOS 開發者能將 AI 功能納入移動應用程式。在這篇教學中，我們將探討 Google Gemini，也就是之前的 Bard，並示範如何使用其 API 來建立一個簡單的 SwiftUI 應用程式。 我們打算製作一個使用 Gemini API 的問答應用程式。這個 App 有著簡單的使用者介面 - 就只有一個讓使用者輸入問題的文字框和顯示回覆文字的 View。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-google-gemini-ai/</link>
        <guid isPermaLink="false">662b350a47612a03a6c59c1e</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Fri, 26 Apr 2024 13:08:37 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1620712943543-bcc4688e7485?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDE3fHxhaXxlbnwwfHx8fDE3MTQwNjc3MDR8MA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何在UIKit開發中使用Xcode預覽（Preview） ]]></title>
        <description><![CDATA[ 在Xcode 15之前，預覽功能僅限於SwiftUI框架。然而，隨著最新版Xcode的發布，蘋果將此功能的利用擴展到UIKit。在這個教程中，讓我們看看你如何在開發 UIKit apps時使用此預覽功能。 ]]></description>
        <link>https://www.appcoda.com.tw/xcode-previews-uikit/</link>
        <guid isPermaLink="false">65fa87df47612a03a6c59bfe</guid>
        <category><![CDATA[ UIKit ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 20 Mar 2024 15:01:23 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1520085601670-ee14aa5fa3e8?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxjb2Rpbmd8ZW58MHx8fHwxNzEwOTE3ODczfDA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何在 SwiftUI 使用@FocusState, @FocusedValue and @FocusedObject ]]></title>
        <description><![CDATA[ 在這篇教程中，我們將探討 SwiftUI 的「焦點」管理API的細節，讓你有能力創造出吸引人且互動的使用者體驗。具體來說，我們將深入探討關鍵屬性包裝器的使用，像是@FocusState、@FocusedValue 和@FocusObject。 ]]></description>
        <link>https://www.appcoda.com.tw/focusstate/</link>
        <guid isPermaLink="false">65f7c40f47612a03a6c59bd2</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Mon, 18 Mar 2024 12:41:37 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1545424273-4dd93a233016?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDE1fHxmb2N1c3xlbnwwfHx8fDE3MTA3MzY1NjR8MA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何使用 SwiftUI 構建條碼生成器 ]]></title>
        <description><![CDATA[ 這個教程中，我們將探索如何利用SwiftUI和這些強大的 API 來開發你自己的條碼生成器 App。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-barcode-generator/</link>
        <guid isPermaLink="false">65c5df6c47612a03a6c59ba4</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Fri, 09 Feb 2024 16:24:59 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1629128625414-374a9e16d56a?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDZ8fHFyJTIwY29kZXxlbnwwfHx8fDE3MDc0NjY4MDh8MA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何在 iOS App 中嵌入照片選擇器 ]]></title>
        <description><![CDATA[ 在本教學中，我將向你展示如何使用改進的PhotosPicker視圖實現內嵌的照片選取器。 ]]></description>
        <link>https://www.appcoda.com.tw/inline-photo-pickers/</link>
        <guid isPermaLink="false">65b3364047612a03a6c59b72</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Fri, 26 Jan 2024 12:45:56 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1592179900431-1e021ea53b28?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDM4fHxpcGhvbmV8ZW58MHx8fHwxNzA2MjQ0MzA4fDA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS App 本地化: 如何使用字符串目錄（String Catalogs） ]]></title>
        <description><![CDATA[ 隨著 Xcode 15 的發布，Apple 引入了一項令人興奮的功能，稱為字串目錄（String Catalogs）。 此功能旨在簡化 App 的本地化過程，使你可以更輕鬆地在一個集中位置管理所有字串。 ]]></description>
        <link>https://www.appcoda.com.tw/string-catalogs/</link>
        <guid isPermaLink="false">65646c4d47612a03a6c59ade</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Mon, 27 Nov 2023 18:38:05 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1600340048140-909329c17ac1?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDY0fHxpb3MlMjBhcHB8ZW58MHx8fHwxNzAxMDgxMzYwfDA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何在 SwiftUI 使用 Preview Macro ]]></title>
        <description><![CDATA[ SwiftUI 中的預覽（Preview）功能允許開發人員在不運行應用程序於設備或模擬器上的情況下，實時查看App的外觀。這個功能對於那些希望快速迭代設計並確保一切看起來和運作如預期的開發人員來說非常有用。隨著 iOS 17 中引入了巨集（Macro）的功能，預覽功能變得更加強大和靈活，提供了更多的自定義和靈活性。在本教學中，我們將探索如何在 SwiftUI 中使用新的預覽巨集（Preview Macro）以及一些令人興奮的新功能。 新的 #Preview 巨集在引入新的 #Preview 巨集之前，你需要定義一個遵循 PreviewProvider 協議的 struct 來創建視圖的預覽。以下是一個範例： struct ContentView_Previews: PreviewProvider {     static var previews: some View {         ContentView()     } } 有了 #Preview 巨集，你可以使用以下程式碼告訴 Xcode 建立預覽： // The basic ]]></description>
        <link>https://www.appcoda.com.tw/preview-macro/</link>
        <guid isPermaLink="false">6538a9a447612a03a6c59ac0</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 25 Oct 2023 13:46:35 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1535982330050-f1c2fb79ff78?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDkwfHxtYWNib29rfGVufDB8fHx8MTY5ODIxMjU1Mnww&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何使用 TipKit 建立工具提示 ]]></title>
        <description><![CDATA[ TipKit 是在 iOS 17 中新引入的一個框架，用於在 App 中建立工具提示，讓開發者能夠提供額外的指導，確保使用者能夠充分利用你的應用程式功能。 ]]></description>
        <link>https://www.appcoda.com.tw/tipkit/</link>
        <guid isPermaLink="false">64fee1af47612a03a6c59a94</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Mon, 11 Sep 2023 17:58:40 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1603015269169-225cb700e29a?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDcxfHxpcGhvbmV8ZW58MHx8fHwxNjk0NDI2MDI0fDA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 17 引入 UnevenRoundedRectangle 新視圖 讓你輕鬆設定特定的圓角 ]]></title>
        <description><![CDATA[ 在iOS 17中，SwiftUI框架引入了一個名為UnevenRoundedRectangle的新視圖。這個視圖的獨特之處在於能夠為每個角指定不同的半徑值，讓開發者可以創建高度客制化的形狀。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-unevenroundedrectangle/</link>
        <guid isPermaLink="false">64db0ea947612a03a6c59a57</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Tue, 15 Aug 2023 16:43:01 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1619510077427-fb14470ce48e?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDQ1fHxpcGhvbmV8ZW58MHx8fHwxNjkyMDg5MDIyfDA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何使用 ProgressView 和 ProgressViewStyle 自訂義進度條樣式 ]]></title>
        <description><![CDATA[ SwiftUI 框架提供了一個內置組件，稱為 ProgressView，供開發人員展示進度條或圓形指示器來顯示長時間運行操作的進度。本篇文章將詳細說明如何實作進度條和自訂義進度條樣式。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-progressview/</link>
        <guid isPermaLink="false">6479a48947612a03a6c59a2e</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Fri, 02 Jun 2023 16:23:15 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1607434472257-d9f8e57a643d?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;M3wxMTc3M3wwfDF8c2VhcmNofDF8fGxvYWRpbmd8ZW58MHx8fHwxNjg1Njk0MDUzfDA&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 透過 Swift CLI 使用 Stable Diffusion　以文本生成漂亮的圖像吧！ ]]></title>
        <description><![CDATA[ 最近很流行的深度學習模型 Stable Diffusion，可以根據文本描述或提示詞生成圖像。為此，Apple 也更新了 Core ML，讓開發者可以輕鬆把以文本生成圖像的功能整合到 App 中。在這篇文章，我會簡單介紹 Stable Diffusion，並以 Swift CLI 執行模型。 ]]></description>
        <link>https://www.appcoda.com.tw/stable-diffusion-swift-cli/</link>
        <guid isPermaLink="false">6445ec1047612a03a6c5968a</guid>
        <category><![CDATA[ macOS ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Thu, 27 Apr 2023 10:39:39 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2023/04/hans-eiskonen-8Pm_A-OHJGg-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何把 Swift DocC 文檔託管到 Web Server 或 GitHub ]]></title>
        <description><![CDATA[ Apple 在 Xcode 13 推出了文檔編譯工具 Swift DocC，讓開發者可以為專案創建漂亮的交互式文檔，我們還可以將把文檔託管在網站上。在這篇文章中，我會簡單介紹 Swift DocC，並教大家把程式碼文檔發佈到自己的網頁或 GitHub，與更多讀者共享文檔。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-docc/</link>
        <guid isPermaLink="false">6434b25147612a03a6c59372</guid>
        <category><![CDATA[ Xcode ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Thu, 13 Apr 2023 14:43:21 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2023/04/rodeo-project-management-software-HUyq8qYO11M-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ MotionBar：SwiftUI 動態Tab Bar 程式庫 ]]></title>
        <description><![CDATA[ MotionBar 是一個全新的程式庫，提供了一系列美麗設計的標籤頁視圖，每個視圖都搭載優雅的動畫和視覺元素，全部使用 SwiftUI 打造。 ]]></description>
        <link>https://www.appcoda.com.tw/motionbar-intro/</link>
        <guid isPermaLink="false">642a807447612a03a6c592df</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Mon, 03 Apr 2023 16:14:49 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1592179900431-1e021ea53b28?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;MnwxMTc3M3wwfDF8c2VhcmNofDh8fGlwaG9uZSUyMGFwcHxlbnwwfHx8fDE2ODA1MDk1MTY&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI 構建可滾動的客製化標籤列　大大提升使用者體驗 ]]></title>
        <description><![CDATA[ 很多流行的手機 App 都用到 Tab Bar，讓使用者可以快速和方便地切換到 App 的不同功能，大大提升使用者體驗。在這篇文章中，我會帶大家使用 SwiftUI 的 TabView，輕鬆地客製化一個可滾動的 Tab Bar，並添加漂亮的動畫，來滿足你的 App 的需要。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-custom-tab-bar/</link>
        <guid isPermaLink="false">642113d347612a03a6c5903a</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Thu, 30 Mar 2023 10:34:24 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2023/03/erik-mclean-xHlrmTZyLUQ-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Xcode 14.3 新功能：輕鬆客製化 SwiftUI Bottom Sheet 背景及滾動行為 ]]></title>
        <description><![CDATA[ iOS 16 推出後，要在 SwiftUI 建立一個互動式 bottom sheet 十分輕鬆，我們只需要在 Sheet 視圖嵌入一個 presentationDetents 修飾符就可以了。在這篇文章中，讓我帶大家客製化自己的 Bottom Sheet。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-bottom-sheet-background/</link>
        <guid isPermaLink="false">640eb0d947612a03a6c58eab</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 15 Mar 2023 10:28:41 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2023/03/cardmapr-nl-8V8PZDbDWiA-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI 利用 ToggleStyle　簡單建立客製化的切換按鈕 ]]></title>
        <description><![CDATA[ Toggle 是 SwiftUI 中很常用的視圖，讓使用者在開或關兩種狀態之間切換。這個控件可以為使用者提供簡單而直觀的界面，因此很多開發者都會用到它。在這篇文章中，我會帶大家在 SwiftUI 使用 ToggleStyle 協定，輕鬆地創建適合自己 App 設計和風格的 Toggle。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-togglestyle/</link>
        <guid isPermaLink="false">63f43e6247612a03a6c58cc2</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Tue, 28 Feb 2023 10:22:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2023/02/isaac-li-shung-tan-ZVr9_4sX8k4-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI 開發一個 QR Code 讀取器 App ]]></title>
        <description><![CDATA[ QR Code 近年在消費市場日漸普及，相信很多 iOS 開發者都想為自己的 App 添加讀取 QR Code 的功能。在這篇文章中，我會使用這個新的 SwiftUI 框架，帶大家來實作一個 QR Code 讀取器 App。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-qr-code-scanner-app/</link>
        <guid isPermaLink="false">63e597fc47612a03a6c588df</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 15 Feb 2023 08:57:42 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2023/02/david-dvoracek-QiPe0UpC0_U-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 5.7：應用新的 Regex 語法　在 SwiftUI 和 Combine 驗證使用者的輸入 ]]></title>
        <description><![CDATA[ Regex 歷史悠久，在許多 UNIX 工具中獲廣泛應用。Apple 在 WWDC2022 重寫了 Regex 語法，讓使用者用起來更方便。在這篇文章中，Mark 會帶大家用更現代的 Regex 語法，建立一個框架來驗證使用者設定的密碼！ ]]></description>
        <link>https://www.appcoda.com.tw/swift-5-7-regex/</link>
        <guid isPermaLink="false">63c9eacf47612a03a6c585f5</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Tue, 31 Jan 2023 14:18:41 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2023/01/regex-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI 的ViewBuilder　輕鬆創建複雜佈局和視圖層次結構 ]]></title>
        <description><![CDATA[ 我們可以利用 SwiftUI 的 ViewBuilder 工具，來在使用者界面中構建和組織視圖或視覺元素。在這篇文章中，Arc  會帶大家利用 ViewBuilder 來創建子視圖，看看這個工具如何簡化創建複雜佈局和視圖層次結構的過程。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-viewbuilder/</link>
        <guid isPermaLink="false">63b52e8847612a03a6c583c7</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 11 Jan 2023 18:28:52 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2023/01/swiftui-viewbuilder-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 初探 iOS 16 的 WidgetKit：一起創建一個主畫面 Widget ]]></title>
        <description><![CDATA[ 在 iOS 16，WidgetKit 支援不少備受期待的功能，像是鎖定畫面 Widget、即時動態、和動態島等，可以說是開發者必須學習的框架。在這篇文章中，Kah Seng 會從基礎知識開始，帶大家一起創建第一個主畫面 Widget！ ]]></description>
        <link>https://www.appcoda.com.tw/widgetkit/</link>
        <guid isPermaLink="false">63a028d747612a03a6c58134</guid>
        <category><![CDATA[ iOS 16 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Sat, 31 Dec 2022 23:37:29 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/12/WidgetKit-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何使用SwiftUI Grid API 創建網格佈局 ]]></title>
        <description><![CDATA[ SwiftUI 4.0 引入了一個新的 Grid API 來組成基於網格的佈局。 你可以使用 VStack 和 HStack 安排相同的佈局。 然而，Grid 視圖使其變得容易得多。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-grid-api/</link>
        <guid isPermaLink="false">63960a3047612a03a6c580be</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Thu, 15 Dec 2022 15:21:06 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1519423791119-fef2800aaef7?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;MnwxMTc3M3wwfDF8c2VhcmNofDR8fGdyaWQlMjBpcGhvbmV8ZW58MHx8fHwxNjcwNzc4MjM3&amp;ixlib&#x3D;rb-4.0.3&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI 使用新的 NavigationStack 視圖　輕鬆構建資料導向的導航 ]]></title>
        <description><![CDATA[ 在 iOS 開發中，導覽視圖絕對是我們最常用的組件。在 iOS 16，Apple 引入了一個新視圖 NavigationStack 來呈現堆疊視圖，讓我們可以構建資料導向的導航。在這篇文章中，我會帶大家試著使用這個新元件，處理 deep linking 和複雜的 user flow。 ]]></description>
        <link>https://www.appcoda.com.tw/navigationstack/</link>
        <guid isPermaLink="false">637d6b0a47612a03a6c57e8f</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Thu, 01 Dec 2022 08:57:12 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/11/NavigationStack-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 了解 Swift Concurrency 如何限制 thread 上限　避免發生 thread explosion ]]></title>
        <description><![CDATA[ Swift Concurrency 會限制我們使用比 CPU core 數量更多的 thread，來防止 thread explosion 發生。在這篇文章中，Kah Seng 會帶我們做幾個測試，來看看當中的操作，並試試是否可以欺騙系統，來建立超出 CPU core 數量的 thread。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-concurrency-thread-explosion/</link>
        <guid isPermaLink="false">636e2d8dabe7c8d54a985f34</guid>
        <category><![CDATA[ Swift ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 16 Nov 2022 11:56:32 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/11/Swift-concurrency-thread-explosion.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 簡介 iOS 16 的新 Layout 協定　讓我們簡單創建自己的容器 ]]></title>
        <description><![CDATA[ 在 iOS 16 中，Apple 推出了 layout 協定，希望進一步簡化在 SwiftUI 構建螢幕 layout 的步驟。在這篇文章中，Mark 會帶大家一起來看看這個新協定的實際用途和實作方法，並用它們的 layout 規則創建屬於自己的容器。 ]]></description>
        <link>https://www.appcoda.com.tw/ios16-layout-protocol/</link>
        <guid isPermaLink="false">635be7ac86832d9595686d33</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Thu, 03 Nov 2022 09:04:54 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/10/sanju-pandita-8qHWHae6iII-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI 的 AnyLayout　幾行程式碼就可以切換 layout！ ]]></title>
        <description><![CDATA[ 在 iOS 16，SwiftUI 推出 AnyLayout 和 Layout 協定，讓開發者構建客製化和複雜的 layout。有了 AnyLayout，我們可以創建回應使用者互動或環境變化的動態 layout。在這篇文章中，我們會試著使用 AnyLayout 來切換垂直和水平 layout。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-anylayout/</link>
        <guid isPermaLink="false">63436d4686832d9595686bda</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 19 Oct 2022 15:26:11 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/10/andrea-de-santis-KDWtCj_-Cwc-unsplash.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 新視圖 Gauge　讓我們在 iOS 16 客製化自己的 Gauge 樣式 ]]></title>
        <description><![CDATA[ 在 iOS 16，SwiftUI 引入了一個新視圖 Gauge，用來顯示進度。我們可以利用這個視圖，來顯示一定範圍內的數值。在這篇教學文章中，讓我們來看看如何使用 Gauge 視圖，以及如何使用不同的 Gauge 樣式。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-gauge/</link>
        <guid isPermaLink="false">6331025086832d9595686a6a</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 05 Oct 2022 09:03:57 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/09/swiftui-gauge.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI 中複製 Dynamic Island 動畫　為我們的 App 增添美感 ]]></title>
        <description><![CDATA[ 在剛剛結束的年度 iPhone 發佈活動上，Apple 在 iPhone 14 Pro 推出了動態島(Dynamic Island)，一個顯示新通知的創新方式。在這篇文章中，Aytuğ 會帶大家試著在 SwiftUI 中複製這個功能，為我們的 App 增添美感。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-dynamic-island-animation/</link>
        <guid isPermaLink="false">6320251186832d9595686955</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 21 Sep 2022 13:18:27 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/09/swiftui-dynamic-island-animation-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI 的新 NavigationSplitView　為使用者創建多列導航的體驗 ]]></title>
        <description><![CDATA[ 在 iOS 16 中，Apple 除了推出新的 NavigationStack 外，還有一個新的視圖容器 NavigationSplitView，讓開發者創建兩列或三列的導航界面。如果你想構建類似內置郵件 App 的 UI，這個視圖元件就可以大派用場了。 ]]></description>
        <link>https://www.appcoda.com.tw/navigationsplitview-swiftui/</link>
        <guid isPermaLink="false">630d74c886832d959568668b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 07 Sep 2022 18:30:05 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/09/navigationsplitview-swiftui-feature-photo-1.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI Navigation 框架的新功能　讓我們更有效率地導航視圖 ]]></title>
        <description><![CDATA[ 一直以來，NavigationView 一直都是 SwiftUI Navigation 框架的致命弱點，它不同的問題總是讓我們逼不得已改用 UINavigationController。在 iOS 16 中，Apple 推出了新的 Navigation API，讓我們可以更有效率地導航視圖。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-navigation/</link>
        <guid isPermaLink="false">62ff648d86832d959568646c</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 24 Aug 2022 10:03:16 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/08/swiftui-navigation-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 的新視圖 PhotosPicker　讓我們直接處理選擇相片的操作 ]]></title>
        <description><![CDATA[ 在 iOS 16 推出之前，如果我們想要顯示一個 Photo Picker，讓使用者可以從相片圖庫中選擇相片，就需要使用 UIKit 的組件。在 iOS 16，Apple 終於在 SwiftUI 加入 PhotosPicker，讓開發者可以直接使用這個新視圖，來處理選擇相片的操作。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-photospicker/</link>
        <guid isPermaLink="false">62e78f4386832d95956862a4</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Tue, 09 Aug 2022 12:57:29 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/08/swiftui-photospicker-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI ImageRenderer：如何把 SwiftUI 視圖轉換為 PDF 文件 ]]></title>
        <description><![CDATA[ 在上一篇文章中，我們學習了如何使用 ImageRenderer 擷取 SwiftUI 視圖，並儲存為圖像。這個在 iOS 16 推出的新類別還可以把視圖轉換為 PDF 文件。在這篇文章中，我會以上次的範例為基礎進行構建，並添加 Save to PDF 功能。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-imagerenderer-pdf/</link>
        <guid isPermaLink="false">62d4be4c86832d9595686118</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 27 Jul 2022 09:24:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/07/swiftui-imagerenderer-pdf-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用新的 ImageRenderer API　輕鬆把 SwiftUI 視圖轉換為圖像 ]]></title>
        <description><![CDATA[ iOS 16 為 SwiftUI 帶來的另一個 API 就是 ImageRenderer。我們可以利用這個 API，輕鬆把 SwiftUI 視圖轉換為圖像。在這篇文章中，我會帶大家試試使用這個新的 API。 ]]></description>
        <link>https://www.appcoda.com.tw/imagerenderer-swiftui/</link>
        <guid isPermaLink="false">62ccebeb86832d9595685fd3</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 20 Jul 2022 09:07:08 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/07/imagerenderer-swiftui-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 透過 SwiftUI 的 ShareLink 來分享文本和圖像等資料 ]]></title>
        <description><![CDATA[ 在 iOS 16 中，SwiftUI 帶來了一個新的視圖 ShareLink。使用者點擊 Share Link 時，視圖就會顯示一個 Share Sheet，讓使用者分享任何型別的資料到其他 App。在這篇文章中，我會帶大家使用 ShareLink，讓使用者分享文本、URL 和圖像。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-sharelink/</link>
        <guid isPermaLink="false">62c24b2286832d9595685e1c</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 13 Jul 2022 17:32:53 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/07/swiftui-sharelink-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI 的新 Charts API　輕鬆建立漂亮的折線圖 ]]></title>
        <description><![CDATA[ 在 iOS 16 之前，我們需要構建自己的圖表、或是依靠第三方程式庫來建立圖表；在 iOS 16 的新版 SwiftUI 中，Apple 推出了 Charts 框架，讓我們可以更輕鬆地創建動畫化和互動的圖表。在這篇文章中，我會帶大家使用 Charts API，一步一步構建一個漂亮的折線圖！ ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-line-charts/</link>
        <guid isPermaLink="false">62b9588186832d9595685bf2</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 06 Jul 2022 11:47:51 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/06/swiftui-line-charts-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI 利用 Live Text API　從圖片中擷取文本 ]]></title>
        <description><![CDATA[ 去年，iOS 15 新增了 Live Text 這個非常有用的功能 。在 iOS 16，Apple 發佈了 Live Text API，讓開發者可以在自己的 App 中加入這個功能。在這篇教學文章中，讓我們一起來看看如何在 SwiftUI 中使用 Live Text API。 ]]></description>
        <link>https://www.appcoda.com.tw/live-text-api/</link>
        <guid isPermaLink="false">62aacef186832d9595685994</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 29 Jun 2022 09:20:01 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/06/live-text-api-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 善用 Swift 的嵌套物件功能　編寫出更清晰的程式碼 ]]></title>
        <description><![CDATA[ Swift 其中一個功能，就是以嵌套方式在其他物件中定義物件型別 (type)。在這篇文章中，Alessandro 會帶大家了解 Swift 的嵌套物件功能，編寫出更清晰的程式碼。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-nested-object/</link>
        <guid isPermaLink="false">628aff7186832d9595684e32</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 22 Jun 2022 09:06:17 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/05/swift-nested-object-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ WWDC 22 的重點更新：SwiftUI 4.0 新功能一覽 ]]></title>
        <description><![CDATA[ WWDC 22 剛剛完結，隨著 iOS 16 和 Xcode 14，Apple 也推出了新版本的 SwiftUI。這次更新帶來了非常多功能，讓開發者可以構建更好的 App，並減少需要編寫的程式碼。在這篇文章中，我會為大家簡單介紹 SwiftUI 4.0 的新功能。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-4/</link>
        <guid isPermaLink="false">62a446d786832d959568532b</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Tue, 14 Jun 2022 17:20:52 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/06/swiftui-4-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 整合 16 個好用的 SwiftUI 擴充功能　來迎接 WWDC 2022 ]]></title>
        <description><![CDATA[ WWDC 2022 即將開始了，而且有可能會推出 SwiftUI 4.0 版本。在這篇文章中，Mark 會為大家介紹 16 個好用的 SwiftUI 擴充功能 (extension)，希望部分功能在新的 SwftUI 版本中都能夠使用吧！ ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-extension/</link>
        <guid isPermaLink="false">628f38cf86832d9595684f3b</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Mon, 06 Jun 2022 15:10:31 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/06/swiftui-extension-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 ConfettiSwiftUI　簡單打造屬於自己的彩色紙屑動畫 ]]></title>
        <description><![CDATA[ 我們不時都會收到讀者提問如何製作彩色紙屑動畫。在這篇文章中，Simon 會為大家介紹 ConfettiSwiftUI 開源程式庫，這個程式庫的很多元素都可以客製化，讓開發者可以輕鬆打造屬於自己的彩色紙屑動畫。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-confetti-animation/</link>
        <guid isPermaLink="false">6281f24786832d9595684ca8</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 01 Jun 2022 13:23:36 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/05/swiftui-confetti-animation-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 有了 SwiftUI　在 iOS 進行網頁抓取更輕鬆！ ]]></title>
        <description><![CDATA[ 有時候，如果網站沒有提供 API，我們就需要讀取網站資料才能獲得需要的內容。在這篇文章中，Ege Sucu 會帶大家看看如何在 iOS 進行網頁抓取，你會發現有了 SwiftUI，這個步驟變得更容易了！ ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-data-scrap/</link>
        <guid isPermaLink="false">627a21f086832d9595684a85</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 25 May 2022 18:56:22 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/05/swiftui-data-scrap.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 一步步編寫模組化程式碼　在 SwiftUI 套用 Swift Package ]]></title>
        <description><![CDATA[ Swift Package 是一個很好的工具，可以讓我們把程式碼分成一個個 Module，並在不同專案中使用。在這篇文章中，Rob 會簡單介紹如何在 SwiftUI 套用 Swift Package。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-package-swiftui-view/</link>
        <guid isPermaLink="false">6270a93986832d959568462f</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 18 May 2022 12:23:31 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/05/swift-package-swiftui-view-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI 中 利用 ViewInspector 框架測試包含 @State 的視圖 ]]></title>
        <description><![CDATA[ 這個小技巧可以簡化測試 SwiftUI 視圖的步驟，讓你了解如何利用 ViewInspector 框架進行 SwiftUI 測試。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-viewinspector/</link>
        <guid isPermaLink="false">626e447cccbe97129b63b6f2</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 11 May 2022 14:49:28 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/05/swiftui-viewinspector-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 5.7 新功能 縮短 Unwrap 的程式碼到底是好是壞？ ]]></title>
        <description><![CDATA[ 在這篇文章中，我會介紹一個在 Swift 5.7 中為 Unwrap Optional 而設的小「語法糖 (syntactic sugar)」 。這個改變並不是這篇文章的重點，更重要的是這個題目的討論。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-unwrap-optional/</link>
        <guid isPermaLink="false">626e42abccbe97129b63b697</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 04 May 2022 12:16:38 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/05/Swift-5-7-unwrap-1.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Vapor 4 初探：實作一個待辦事項 App 了解這個 Swift 框架 ]]></title>
        <description><![CDATA[ 在這系列的教學文章中，我會為大家介紹一些 Vapor 提供的功能，並一起構建一個待辦事項 App。這篇文章主要會介紹什麼是 Vapor，深入了解這個框架，並介紹一些基礎知識。 ]]></description>
        <link>https://www.appcoda.com.tw/vapor-4-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b49e</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 27 Apr 2022 10:43:00 +0800</pubDate>
        <media:content url="https://images.unsplash.com/photo-1463171379579-3fdfb86d6285?crop&#x3D;entropy&amp;cs&#x3D;tinysrgb&amp;fit&#x3D;max&amp;fm&#x3D;jpg&amp;ixid&#x3D;MnwxMTc3M3wwfDF8c2VhcmNofDI3fHx3ZWJ8ZW58MHx8fHwxNjUxMTEzOTAz&amp;ixlib&#x3D;rb-1.2.1&amp;q&#x3D;80&amp;w&#x3D;2000" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 深入了解依賴反向原則 讓我們可以編寫出更好的程式碼 ]]></title>
        <description><![CDATA[ 開發者有責任確保軟件不但可用，而且乾淨、可讀、也易於更改。這就是 SOLID 原則派上用場的時候！在這篇文章中，我們會看看其中一個最重要、最常用的原則：依賴反向原則 (DIP)。 ]]></description>
        <link>https://www.appcoda.com.tw/dependency-inversion-principle/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b494</guid>
        <category><![CDATA[ Object Oriented Programming ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 20 Apr 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/04/-------feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI 構建一個輪盤選擇器 (Wheel Picker) ]]></title>
        <description><![CDATA[ SwiftUI 以一種創新且極度簡單的方式，讓開發者以聲明式語法 (Declarative Syntax) 開發 UI。在這篇文章中，我會帶大家在 SwiftUI 中，構建一個輪盤選擇器 (Wheel Picker)，並獲取使用者的滑動動作方向，讓我們的 App 更加豐富。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-wheel-picker/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b493</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 13 Apr 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/04/wheel-widget.jpeg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 比較 SwiftUI 的 ZStack 和 Overlay 了解兩個方法適用的情況 ]]></title>
        <description><![CDATA[ 在 SwiftUI 中，我們可以選擇使用 ZStack 或 Overlay 來將視覺組件疊加。這兩個方法的結果都十分相似，而且意義也幾乎一樣。在這篇文章中，Pedro 會跟大家深入了解這兩個常用方法的特性，看看它們相似和不同之處，並弄清楚兩個方法分別適用於甚麼情況。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-zstack-overlay/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b492</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 06 Apr 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/03/swiftui-zstack-overlay-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI 使用 Markdown 輕鬆格式化文本 ]]></title>
        <description><![CDATA[ iOS 15 SDK 引入了一些重要功能，像是 AsyncImage 和 searchable 等，除此之外，還有一些可以簡化 iOS App 開發的小更新。在這篇教學文章中，讓我們一起來試試在 SwiftUI 的 Text 視圖中使用 Markdown。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-markdown/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b491</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 30 Mar 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/03/swiftui-markdown-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 iOS 應用 SQLite 來處理數據 大大提高 App 效能 ]]></title>
        <description><![CDATA[ 不論你是希望數據庫的儲存量可以更大，或是可以更好地控制數據，SQLite 和 SQL 都絕對不會讓你失望！在 App 中使用 SQLite，不但可以提高 App 的效能，在使用 CloudKit 同步數據也會變得更容易。在這篇文章中，Mattia 會帶大家簡單了解如何在 Swift 專案中使用 SQL。 ]]></description>
        <link>https://www.appcoda.com.tw/ios-sqlite/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b490</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 23 Mar 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/03/opollo-photography-yalgjMNDJkM-unsplash-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 透過 SwiftUI　實作一個新擬物化風格的切換按鈕動畫 ]]></title>
        <description><![CDATA[ 開發者都很喜歡使用 SwiftUI 框架進行編程，因為它可以讓我們輕鬆為視圖變化設置動畫。在這篇文章中，Sarah 會帶大家在 SwiftUI 中，實作一個客製化新擬物風格切換按鈕，並為切換視圖製作動畫。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-neumorphic-animated-toggle/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b48f</guid>
        <category><![CDATA[ 動畫實作 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 16 Mar 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/02/swiftui-neumorphic-animated-toggle-feature.jpeg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI　構建一個像 Instagram 直播的按讚按鈕動畫 ]]></title>
        <description><![CDATA[ Apple 的 SwiftUI 為開發者提供了一個輕巧易用的工具，來創建使用者界面。在這篇教學文章中，Sarah 會帶大家在 SwiftUI 使用 GeometryEffect 和 ViewModifier，一步步製作出一個類似 Instagram 直播的按讚按鈕動畫！ ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-floating-hearts-animation/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b48e</guid>
        <category><![CDATA[ 動畫實作 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 09 Mar 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/02/swiftui-floating-hearts-animation-feature.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI App 中構建多個 Theme　一鍵簡單套用不同的 Theme ]]></title>
        <description><![CDATA[ 在這篇教學文章中，Pavlos 會利用一個只有一個 Text 的範例 App，帶大家為 SwiftUI App 建立多個 theme，讓 App 根據不同的 Theme 更改顏色和文本。快來一起動手實作，為你的 App 客製化自己的 Theme 吧！ ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-multiple-themes/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b48d</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 02 Mar 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/02/swiftui-multiple-themes-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI　實作一個 Flexible Picker 來篩選結果！ ]]></title>
        <description><![CDATA[ 在 UIKit 實作篩選器 (filter) 來篩選結果時，我會實作有特定 UICollectionViewFlowLayout 的 UICollectionView。那如果在 SwiftUI，又應該如何實作呢？在這篇文章中，Jędrzej 會帶大家在 SwiftUI 實作一個 Flexible Picker！ ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-flexible-picker/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b48c</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 23 Feb 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/02/swiftui-flexible-picker-feature.jpeg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI 處理 ScrollView：簡單以編程方式滾動到特定行列 ]]></title>
        <description><![CDATA[ 在 SwiftUI 中，即使是執行簡單的任務時，處理 ScrollView 的步驟都可以變得十分繁瑣；更令人沮喪的是，同一個情況在 UIKit 明明就非常簡單。在這篇文章中，Alessandro 會帶大家實作一個簡單的範例 App，只需要 30 多行程式碼，就可以以編程方式滾動列表，到我們所需要的行列了。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-scrollview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b48b</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 16 Feb 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/01/swiftui-scrollview-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 為 UIKit 視圖構建 SwiftUI PreviewProvider　實時預覽 UI 的更改！ ]]></title>
        <description><![CDATA[ 在 SwiftUI 設計時，我們隨時都可以在 PreviewProvider 查看更改。但在 UIKit 視圖，我們就每次都需要重新編譯和構建專案，才能在模擬器中看到結果。在這篇文章中，Emad 會教大家在 UIKit 構建 SwiftUI 的 PreviewProvider，讓我們可以在 UIKit 實時預覽更改！ ]]></description>
        <link>https://www.appcoda.com.tw/uikit-swiftui-previewprovider/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b48a</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 09 Feb 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/01/SwiftUI-PreviewProvider-for-UIKit-Views-1.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 小技巧：在 ScrollView 實時計算 Scroll 偏移值 ]]></title>
        <description><![CDATA[ 在 UIKit 中，每個 UIScrollView 都有一個屬性，讓我們可以容易地讀取視圖本身的偏移值 (offset)。遺憾的是，SwiftUI 到目前為止還是缺少了這個簡單的屬性。在這篇文章中，Alessandro 會帶大家實作一個非常簡單的 UI，來顯示實時顯示 ScrollView 偏移值。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-scrollview-offset/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b489</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 04 Feb 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/01/swiftui-scrollview-offset-1.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI 的視圖修飾符　簡單構建有意義的空白狀態 ]]></title>
        <description><![CDATA[ 空白狀態 (Empty State) 是 UX 的重要元素，是使用者初次打開 App 時看到的東西，要留下好的第一印象，機會就只有一次。一個有意義的空白狀態，可以讓使用者感到被歡迎，我們也可以藉著這個機會，教使用者如何使用 App。在這篇文章中，Peter 將會利用 SwiftUI，跟大家探究實作空白狀態的不同方法。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-empty-state/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b488</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 26 Jan 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/01/swiftui-empty-state.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Solidity 簡介：讓 Swift 開發者快速掌握 Solidity 的語言結構和函式 ]]></title>
        <description><![CDATA[ Solidity 是一種物件導向語言，用來撰寫適用於區塊鏈的智能合約，比如說 Ethereum。Solidity 的語法與 Javascript 類似，但語義就比較接近 C++。在這篇文章中，Kristaps 會帶大家從 Swift 開發者的角度，深入探究 Solidity 的語言結構和功能。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-solidity/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b487</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 19 Jan 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/12/solidity-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 透過 Swift Playgrounds 4 直接在 iPad 構建一個文字轉語音 App ]]></title>
        <description><![CDATA[ 現在，有了 Swift Playgrounds 4，初學者沒有 Mac 都可以學習 Swift 和 SwiftUI 了。讓我們來看看 Swift Playgrounds 4，並試試在 iPad 上開發一個簡單的文字轉語音 (text-to-speech) App 吧。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-playgrounds-4/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b486</guid>
        <category><![CDATA[ Swift Playgrounds ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 12 Jan 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/01/swift-playgrounds-featured.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI 的 matchedGeometry　構建一款九宮格遊戲！ ]]></title>
        <description><![CDATA[ 對經驗豐富的 UIKit 程式設計師來說，使用 SwiftUI 時最困難的就是佈局。這個情況在 iOS 15 就不一樣了！在這篇文章中，Mark 會帶大家在 iOS 15 中使用 Swift，配合一些 UnitPoint 對齊方式等方法，來構建一款九宮格遊戲，來展示 matchedGeometry 的意義。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-puzzle-game/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b485</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 05 Jan 2022 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/11/swiftui-puzzle-game.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 18 App 程式設計實戰心法 ]]></title>
        <description><![CDATA[ 學習Swift及iOS開發，由零開始帶領你打造出一支完整且支援雲端資料傳輸的iOS App。此書支援 Swift 6, iOS 18 和 Xcode 16 並提供一年免費更新。還有，此書會教你使用兩套不同的 UI 框架（SwiftUI 和 UIKit）開發同一個範例程式。透過整個開發過程，就能讓你掌握這兩個框架的使用方法。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-beginner-book/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b49a</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Sat, 01 Jan 2022 16:50:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2024/12/website-swift-beginner-book-ios18-cover.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 精通 SwiftUI ]]></title>
        <description><![CDATA[ 無論你是剛剛學習 iOS App 開發或已有一定經驗的 iOS 開發者，這本書也將幫助您了解這個全新的 SwiftUI 框架，並學習如何將結合 UIKit與SwiftUI。全書內容和程式碼都支援 Xcode 26 和 iOS 26。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-book/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b499</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Sat, 01 Jan 2022 16:19:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2025/10/website-chi-swiftui-book-1.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI　在 iOS 15 建立一個重複播放的影片背景 ]]></title>
        <description><![CDATA[ 直到目前為此，SwiftUI 還沒有一種直接的方法，讓我們製作影片背景 (video background) 或影片播放器 (video player)。在這篇文章中，Mirhat 會教大家利用 Apple 現有的 AVKit 和 AVFoundation，來用另一種比較麻煩的方法，建立重複播放的影片背景。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-looping-video-background/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b484</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 29 Dec 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/11/swiftui-loop-video-background-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 5.5 的新語法和機制 讓我們用最直觀的方式撰寫非同步程式 ]]></title>
        <description><![CDATA[ Swift 5.5 導入了新的非同步任務機制，包括了 async/await、Actor、Task Group 等等好用的工具，還有針對既有的 SwiftUI、Core Data、跟許多 Foundation 下的 API 所做的 async/await 封裝。有了這些新的語法跟機制，我們就可以用非常直觀的方式來撰寫非同步的程式，提升程式碼的可讀性，同時也大幅降低出錯的機率。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-concurrency-actor/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b483</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Huang ShihTing ]]></dc:creator>
        <pubDate>Wed, 22 Dec 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/12/swift-concurrency-actor-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 介紹 5 個 Swift Extension　讓你輕鬆建立隨機數！ ]]></title>
        <description><![CDATA[ 有兩個行業經常會用到隨機數 (random number)，就是遊戲行業和加密貨幣行業 (cryptographic)。在這篇文章中，Mark 會為大家介紹 5 個 Swift extension，深入探討創建隨機數這個主題，一起試試創建不會重覆的隨機字符、字串、或數字吧！ ]]></description>
        <link>https://www.appcoda.com.tw/swift-random-number/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b482</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 15 Dec 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/12/swift-random-number-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 18 App程式設計進階攻略 ]]></title>
        <description><![CDATA[ 全書超過900頁，以實作超過40個Xcode專案來討論 API 與 iOS SDK 的框架。如你已有一點Swift以及iOS開發經驗，此進階書可以幫助繼續提升你的開發技術。所有內容和程式碼都支援最新版的 Xcode 16， Swift 6.0 和 iOS 18。 ]]></description>
        <link>https://www.appcoda.com.tw/intermediate-ios-book/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b49b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Tue, 14 Dec 2021 16:57:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2025/01/website-intermediate-ios18-chi-cover.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 解構 iOS 15 的 StoreKit 2 了解十多年來第一次的大更新！ ]]></title>
        <description><![CDATA[ StoreKit 早在 iOS 3.0 就已經推出了，Apple 雖然一直有作更新，但都只是一些小調整。直到今年在 WWDC 2021，Apple 推出了 StoreKit 2，可以說是十多年來第一次重大的更新。在這篇文章中，Mark 會帶大家拆解 StoreKit 2 的範例程式碼，了解當中的新功能和語法！ ]]></description>
        <link>https://www.appcoda.com.tw/storekit-2/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b481</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 08 Dec 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/11/storekit-2-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 5.5 的 Task Group　讓我們快速地建立子任務並收集結果 ]]></title>
        <description><![CDATA[ 本篇原文（標題：Understanding Swift 5.5 Task Groups）刊登於作者 Medium，由 Lee Kah Seng 所著，並授權翻譯及轉載。  Apple 在 Swift 5.5 中新增了 Task Group，它在 Swift 並行框架 (concurrency framework) 中非常重要。一如其名，Task Group 集合了一組並行執行的子任務，在所有子任務 (child task) 執行完成後才會回傳結果。  在這篇教學文章中，我將會帶大家建立 task group、把子任務添加到 Task Group、以及從所有子任務收集結果。文章的內容非常多，事不宜遲，讓我們開始吧！  準備工作 ]]></description>
        <link>https://www.appcoda.com.tw/task-group/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b480</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 01 Dec 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/11/task-group-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 對 Maps App 進行 Reverse Engineer　一步步拆解它的構造！ ]]></title>
        <description><![CDATA[ 我們可以透過逆向工程  (reverse engineer)，來拆解一個 App 的流程和結構。在這篇文章中，Zafar 會帶大家利用 Xcode Debugger，對 Apple 的 Maps iOS App 進行逆向工程，一步步拆解它的構造。 ]]></description>
        <link>https://www.appcoda.com.tw/reverse-engineer/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b47f</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 24 Nov 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/11/Reverse-Engineer-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 使用 WKWebView　簡單地在 SwiftUI 顯示 Web Page ]]></title>
        <description><![CDATA[ 很多 App 都需要顯示 web 內容，而 iOS SDK 就為開發者提供了幾個方法，其中一個就是 WKWebView。但是，現時 SwiftUI 的版本並沒有內置的 web 視圖，因此我們需要利用 UIKit 框架來實作。在這篇教學中，Simon 會帶大家一步步在 SwiftUI 專案中調用 WKWebView。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-wkwebview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b47e</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 17 Nov 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/11/WKWebView-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI　在 iOS 15 中構建一個簡單的繪畫 App ]]></title>
        <description><![CDATA[ 在開發 App 時，有一件事情是開發者一定要做的，就是繪製一些簡單圖形。我們可以利用 Paint 或 Preview 繪製這些簡單的圖形，這兩個都是很好的 App，但有時還是會有點不足。在這篇文章中，Ｍark 會帶大家利用 SwiftUI，在 iOS 15 中構建一個簡單的繪畫 App，來解決這個問題。 ]]></description>
        <link>https://www.appcoda.com.tw/painting-app-swiftui/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b47d</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 10 Nov 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/10/painting-app-swiftui-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 R.swift　在 iOS App 自動化 Asset Management ]]></title>
        <description><![CDATA[ 本篇原文（標題：How To Automate Asset Management in Your iOS Apps）刊登於作者 Medium，由 Zafar Ivaev 所著，並授權翻譯及轉載。  在這篇教學文章中，我們會學習利用流行的開源程式庫 R.swift，在 iOS App 中自動化 Asset Management。讀完這篇文章之後，你會學懂如何自動化：  圖像 (Image)顏色 (Color)本地化 (Localization) 事不宜遲，讓我們開始吧。  自動化 Asset Management  讓我們從一個空的專案開始：  首先，我們要把 R.swift 添加到專案中。讓我們把以下這行程式碼添加到 Podfile，然後執行 ]]></description>
        <link>https://www.appcoda.com.tw/asset-management/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b47c</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 03 Nov 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/10/asset-management-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 2 個 SwiftUI 的除錯 (Debugging) 好工具　快速發現 App 的問題 ]]></title>
        <description><![CDATA[ SwiftUI 提供了一個僅用於除錯 (debugging) 的好方法，讓我們區分是什麼改動讓視圖重新加載。這個方法是用來查找錯誤的。當我們看到視圖在重新調用 body 屬性 (property)，卻又不知道原因的時候，這個方法就大派用場了。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-debugging/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b47b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 27 Oct 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/10/debugging-swiftui-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 iOS 15 中利用 SwiftUI Canvas　輕鬆繪製一個時鐘動畫 ]]></title>
        <description><![CDATA[ 本篇原文（標題：Implementing SwiftUI Canvas in iOS 15）刊登於作者 Medium，由 Mark Lucking 所著，並授權翻譯及轉載。   和 UIKit 相比，SwiftUI 還是不夠完善。儘管 iOS15 推出的 SwiftUI 已經是第 3 次修訂，但還是缺少了一些重要的視圖。  Apple 餘下的挑戰，最主要的就是盡可能讓開發者自然地進行過渡。因為大家都不想重寫 UI/UX 程式碼，公司絕對無法付出這麼多時間和精神。他們需要一種方法，來盡量重用已有的程式碼，但又不會有 UIKit 的包袱。  除此之外，SwiftUI 是個非常新的典範 (paradigm)，調整了一些開發者之前已經掌握好的控件。因此，雖然他們在最近的 WWDC 21 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-canvas/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b47a</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 20 Oct 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/10/Canvas-view-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI　一步步構建漂亮的彩色紙屑效果 ]]></title>
        <description><![CDATA[ Apple 的 SwiftUI 為開發者提供了一個輕巧易用的工具，來創建使用者界面。在這篇文章中，Sarah 會帶大家利用 SwiftUI 構建彩色紙屑效果，並詳細解釋不同設定和修飾符 (modifier) 的效果，讓你可以為 App 製作自己的彩色紙屑效果。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-confetti-particle/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b479</guid>
        <category><![CDATA[ 動畫實作 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 13 Oct 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/09/swiftui-confetti-particles-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 推薦 4 個加密貨幣 (Cryptocurrency) API　讓你的 App 更加強大 ]]></title>
        <description><![CDATA[ 此文會介紹幾個 Cryptocurrency API，讓我們可以構建自己的 Web 和手機 App，以及資料集 (dataset) 和交易機器人 (trading bots)。 ]]></description>
        <link>https://www.appcoda.com.tw/cryptocurrency-api/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b478</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 06 Oct 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/09/cryptocurrency-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI 中設置漸變動畫 (animated gradient) 的 3 個方法 ]]></title>
        <description><![CDATA[ 最近有讀者提問：如何利用 SwiftUI 設置漸變動畫 (animated gradient)、或創建漸變背景動畫？SwiftUI 框架有許多內置組件，例如 LinearGradient 和 AngularGradient，讓開發者設置漸變效果。另外，SwiftUI 也有 .animation 修飾符 (modifier)，讓開發者可以簡單地創建動畫。問題是，我們如何結合漸變組件和 .animation 修飾符來創建漸變動畫呢？ ]]></description>
        <link>https://www.appcoda.com.tw/animated-gradient-swiftui/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b477</guid>
        <category><![CDATA[ 動畫實作 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 29 Sep 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/09/animated-gradient-swiftui-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 程式設計師 (Programmers) 頻繁換工作　是為了更好的職涯 ]]></title>
        <description><![CDATA[ 程式設計師 (Programmers) 或開發者 (Developers) 在同一個崗位待超過 10-15 年，幾乎可以說是不可能的。有些人可能會問：為甚麼程式設計師換工作換得那麼頻繁呢？在這篇文章中，Entreprogrammer 會利用統計數據和經驗，分享程式設計師頻繁換工作的原因，讓你為自己的職涯做好規劃。 ]]></description>
        <link>https://www.appcoda.com.tw/programmers-career/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b476</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 22 Sep 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/09/programmer-career-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 iOS 的 Shortcuts App　定期呼叫無伺服器函式或 Web API ]]></title>
        <description><![CDATA[ 每次做 side project 的時候，我都有需要每天、或是每小時執行一次 API 或無伺服器函式 (Serverless Function) 。要定期執行無伺服器函式或 Web API 有很多方法，在這篇文章中，RayRay 會為大家介紹一個免費的方法，就是捷徑 (Shortcuts) App。 ]]></description>
        <link>https://www.appcoda.com.tw/shortcuts-call-web-api/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b475</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 15 Sep 2021 20:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/08/shortcuts-call-web-api-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 透過 Rust 製作 Cli 介面　在 Solana 創建屬於自己的 Token ]]></title>
        <description><![CDATA[ SPL 的全稱是 Solana Program Library，它是在 Solana 鏈上運行的一系列程式。你可以把它想像成官方寫好的一些合約，讓開發者可以輕鬆調用功能。你可以參考這篇文章詳細了解這個概念。  今天我們會來體驗一下這個系列中的 Token Program，我們將會透過 Rust 製作 Cli 介面，讓我們可以發行自己的 Token。你可以在這裡參考這篇文章的範例程式碼。  初步認識 Solana Solana 是一個開源的區塊鏈項目，它實現了高性能的抗審查區塊鏈，提供各種去中心化金融 (DeFi) 的解決方案。Solana 每秒交易量超過 5 萬筆，平均出塊時間約 2 秒（相較於以太坊每秒 15 筆，幣安智能幣約 100 筆）。由於金融交易的速度與安全需求，這些創新的速度讓 Solana 鏈快速被許多 Defi 以及區塊鏈項目喜愛。  Solana ]]></description>
        <link>https://www.appcoda.com.tw/solana/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b474</guid>
        <category><![CDATA[ Blockchain ]]></category>
        <dc:creator><![CDATA[ Yu Hao Chen ]]></dc:creator>
        <pubDate>Wed, 08 Sep 2021 18:18:08 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/08/solana-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI 的 @EnvironmentObject　輕鬆地在視圖之間傳遞數據！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：Passing Variables to Other Views Made Easy With @EnvironmentObject）刊登於作者 Medium，由 Tatenda Kabike 所著，並授權翻譯及轉載。  我們在大部分的手機 App 中，都會看到整個 App 和視圖之間共享數據 (data) 的情況。SwiftUI 提供了一個方便又簡單的方法，讓我們在 App 中傳遞數據。在這篇文章中，我們將會試著使用 @EnvironmentObject，並仔細研究它的行為。  @EnvironmentObject 是一種物件型別 (object type)，讓我們可以添加數據，之後再利用@StateObject 在 App 中隨時存取它，來添加信息或作出修改。  在這篇文章中，我將會利用一個簡單的例子，來示範如何使用 @EnvironmentObject ]]></description>
        <link>https://www.appcoda.com.tw/environmentobject/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b473</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 01 Sep 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/08/EnvironmentObject-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 iOS 15 中為 SwiftUI 按鈕設置樣式　大大節省開發時間 ]]></title>
        <description><![CDATA[ 在 iOS 15 中，Apple 引入了一個新方法，來為 SwiftUI 和 UIKit 框架的 iOS App 客製化按鈕。這篇教學文章主要會介紹 SwiftUI 的新功能，如果你有興趣了解如何在 iOS 15 中設置 UIButton 樣式，可以參考 Sarun 撰寫的這篇文章。  在 SwiftUI 設置按鈕樣式 在我們介紹 iOS 15 的新修飾符 (modifier) 之前，先重溫一下現在我們設置按鈕樣式的方法。  比如說，我們想創建一個圓角按鈕，就可以如此編寫程式碼：  Button(action: {}) {     Text("Buy me a coffee") } .padding() .foregroundColor(.white) .background( ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-buttons-ios-15/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b472</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 25 Aug 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/08/swiftui-buttons-ios-15-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 15 10 個強大的隱私功能　進一步保障使用者 ]]></title>
        <description><![CDATA[ 本篇原文（標題：10 Robust iOS 15 Privacy Features Coming To Your iPhone）刊登於作者 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  WWDC 2021 帶來了很多少新功能，雖然 iOS 15 軟件的升級比較細微，但 Apple 在保障使用者隱私 (privacy) 方面可謂不遺餘力。  Apple 在 iOS 14 推出保障使用者隱私的功能之後，大家可能都預計 Apple 今年不會再添加這方面的功能；但是 Apple 反而還增加了最少 10 個隱私功能！  App 隱私權報告 在 iOS 14 中， ]]></description>
        <link>https://www.appcoda.com.tw/ios-15-privacy/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b471</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 18 Aug 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/08/ios-15-privacy-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 Swift Packages 簡單地與團隊共享可重用的程式碼 ]]></title>
        <description><![CDATA[ Swift Packages 是可重用的組件，開發者可以把組件匯入到自己的專案中。Swift Package Manager 是一個內建的工具，用於創建和管理 Packages，如此一來，我們就可以以 Packages 簡單地分享可重用的程式碼。在這篇教學文章中，我會帶大家看看如何創建 Swift Packages，並把動畫導航選單的程式碼，轉換為可重用的 SwiftUI 組件。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-packages-swiftui-views/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b470</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 11 Aug 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/07/swift-packages-swiftui-views-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 matchedGeometryEffect　輕鬆實作動畫導航選單 ]]></title>
        <description><![CDATA[ 開發者都很喜歡使用 SwiftUI 框架進行編程，因為它可以讓我們輕鬆為視圖變化設置動畫。iOS 14 引入的 matchedGeometryEffect 修飾符，進一步簡化了實作視圖動畫的步驟。在這篇文章中，Simon 會帶大家利用這個修飾符，簡單地開發一個動畫導航選單 (navigation menu)。 ]]></description>
        <link>https://www.appcoda.com.tw/matchedgeometryeffect-navigation-menu/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b46f</guid>
        <category><![CDATA[ 動畫實作 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 04 Aug 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/07/matchedgeometryeffect-navigation-menu-feature-photo-2.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 15 新功能：Vision 的人物分割視覺請求 ]]></title>
        <description><![CDATA[ Vision 框架為複雜的電腦視覺 (Computer Vision) 任務，提供開箱即用的解決方案，它還會在分類期間對圖像進行前處理來提取 Core ML 請求。在 WWDC 2021，Apple 引入了 2 個新的視覺請求：人物分割和文件分割。在這篇文章中，Anupam 會先為大家詳細介紹人物分割視覺請求。 ]]></description>
        <link>https://www.appcoda.com.tw/vision-person-segmentation/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b46e</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 28 Jul 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/07/vision-person-segmentation-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 輕鬆地在 iOS 15 創建 Bottom Sheet：UISheetPresentationController ]]></title>
        <description><![CDATA[ 在 iOS 15 中 UIKit 推出的新功能中，其中一個亮點就是 UISheetPresentationController。在這篇文章中，Simon 會為大家介紹這個新類別，現在只需幾行程式碼，就可以輕鬆地創建 Bottom Sheet，並客製化其屬性。一起來在 App 上使用這個漂亮的 UI Pattern 吧！ ]]></description>
        <link>https://www.appcoda.com.tw/bottom-sheet-uikit/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b46d</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 21 Jul 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/07/bottom-sheet-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 Searchable 修飾符　輕鬆在 SwiftUI List 視圖中實作搜尋欄 ]]></title>
        <description><![CDATA[ iOS 15 推出前，SwiftUI 並沒有內置修飾符來在 List 視圖中處理搜尋，開發者需要創建自己的解決方案。在 iOS 15 中，SwiftUI 框架為 List 視圖帶來了一個名為 searchable 的新修飾符。在這篇文章中，我會帶大家看看這個新修飾符如何簡化實作搜尋欄的步驟，並為我們節省時間。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-searchable/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b46c</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 14 Jul 2021 18:18:43 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/07/searchable-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 新功能：利用 AsyncImage 非同步加載和顯示 Remote Image ]]></title>
        <description><![CDATA[ AsyncImage 是 iOS 15 推出的新視圖，用於非同步加載和顯示 Remote Image。在這篇文章中，我會帶大家在 SwiftUI 專案中使用 AsyncImage，讓我們不需要編寫自己的程式碼，只需要輸入圖像 URL，AsyncImage 就會抓取 Remote Image 並顯示在螢幕上！ ]]></description>
        <link>https://www.appcoda.com.tw/asyncimage/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b46b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 07 Jul 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/06/asyncimage-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 15 的 SwiftUI ：在 List 視圖中添加滑動動作及隱藏分隔線 ]]></title>
        <description><![CDATA[ 在 WWDC 21，Apple 為 SwiftUI 框架的 List 視圖帶來了一些改進。現在，我們只需要幾行程式碼，就可以輕鬆客製化分隔線 (line separator) 的外觀，並將客製化滑動動作 (swipe action) 添加到 List 視圖。在這篇教學文章中，我們會帶大家看看兩個新的修飾符。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-swipe-actions/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b46a</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 30 Jun 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/06/swiftui-swipe-actions-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 應用 Core ML 在 SwiftUI 中轉換圖像的背景 ]]></title>
        <description><![CDATA[ Core ML 是 Apple 的手機機器學習框架，讓我們在設備上部署、運行和重新訓練模型。我們可以利用 CoreML 實作很多東西，包括文本、聲音、甚至是圖像識別。在這篇教學文章中，Anupam 會帶大家使用 Core ML 和 Vision，在 SwiftUI 實作圖像分割，來刪除和轉換圖像的背景。 ]]></description>
        <link>https://www.appcoda.com.tw/core-ml-background-removal-swiftui/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b469</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 23 Jun 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/06/core-ml-background-removal-swiftui.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 3 新功能一覽：Markdown 支援, AsyncImage, Pull To Refresh 等 ]]></title>
        <description><![CDATA[ SwiftUI 是 Apple 的宣告式 (declarative) UI 框架。在 WWDC 2021，Apple 為 SwiftUI 帶來了新的改進和功能，並棄用了一些函數。在這篇文章中，Anupam 會帶大家看看 SwiftUI 3.0 在 iOS 15 上的新功能，讓我們為使用者帶來更豐富的體驗。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-3/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b468</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 18 Jun 2021 12:27:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/06/SwiftUI-3.0-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 Xcode 12　在 Swift 專案中添加啟動畫面 Launch Screen ]]></title>
        <description><![CDATA[ 啟動畫面 (Launch Screen) 是 App 啟動時，你向使用者展示的第一個畫面。如果你是使用 UIKit 創建新專案，Xcode 會自動產生一個名為 LaunchScreen.storyboard 的 Storyboard 檔案，讓開發者設計 App 的啟動畫面。但是，如果你是使用 SwiftUI 框架開發 App，就不會有啟動畫面的檔案。那麼，我們如何在 SwiftUI 專案中設計啟動畫面呢？  Xcode 12 就有一個新的方式，讓我們可以在 SwiftUI 中實作啟動畫面，一起在這篇教學中看看是如何操作吧。  編者備註：如果你想學習 SwiftUI，可以參閱我們的《精通 SwiftUI》一書。  準備啟動畫面的圖像及 Color Set 以下就是我們即將要構建的啟動畫面，畫面非常簡單，就是在視圖的中央顯示了一個圖像。 ]]></description>
        <link>https://www.appcoda.com.tw/launch-screen-swiftui/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b467</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 16 Jun 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/06/launch-screen-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 3個不可看輕的軟技能 (Soft Skills)　讓軟體工程師職涯走得更遠 ]]></title>
        <description><![CDATA[ 本篇原文（標題：3 Highly Underrated Software Engineering Skills）刊登於作者 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  軟體工程 (software engineering) 是一個廣闊的領域，包含多個子學科。當然，軟體工程有那麼多子學科，那麼根據你工作的學科，你就會需要不同的技能。  比如說，如果你想做前端開發者 (frontend developer)，有良好的 UI/UX 技能可能有優勢，但是後端開發者 (backend developer) 就未必有這個需要。  我看到有些開發者，尤其是那些剛接觸某個領域的開發者，都會傾向專注於自己的技術技能 (technical skills)，像是資料結構 (data structure)、演算法 (algorithm)、設計模式 (design pattern)、數據庫維護 ]]></description>
        <link>https://www.appcoda.com.tw/soft-skills-software-engineering/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b466</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 09 Jun 2021 19:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/05/soft-skills-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 推薦 10 個 Visual Studio Code 擴充套件　讓編程變得有效率又有趣！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：10 Fun VS Code Extensions To Enjoy Coding As a Developer）刊登於作者 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  Visual Studio Code 是一款由微軟開發的原始碼編輯器，它不只支援 JavaScript ，還支援幾乎所有其他的程式語言，就連 Python 或 Flutter 開發者都會愛上這個 IDE。它為開發者提供 Interactive Playground、除錯 (Debug)、版本控制 (Version Control) 等工具。  但是，VS Code 最有趣的地方是容許使用者客製化程式碼編輯器。Marketplace&nbsp;上有很多各種各樣的擴充套件 (Extension) ]]></description>
        <link>https://www.appcoda.com.tw/visual-studio-code/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b465</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 02 Jun 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/05/visual-studio-code-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Xcode 12.5 新功能：直接在模擬器錄製影片和 GIF 動畫 ]]></title>
        <description><![CDATA[ 在新推出的 Xcode 12.5 中，Apple 終於允許開發者直接在模擬器錄製影片和 GIF Animation，而不再需要利用程式碼了！ ]]></description>
        <link>https://www.appcoda.com.tw/xcode-simulator-animated-gif/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b464</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 26 May 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/05/xcode-simulator-animated-gif-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 透過 Reality Composer 和 RealityKit　輕鬆地創建 3D AR Apps ]]></title>
        <description><![CDATA[ RealityKit 是 2019 年推出的新框架，用於實作高性能 3D 模擬和渲染功能，而 Reality Composer 就讓初學者無需編寫任何程式碼，都可以輕鬆地創建互動的 AR 體驗。在這篇文章中，你將學會使用這兩個框架，構建互動的 3D AR App。 ]]></description>
        <link>https://www.appcoda.com.tw/reality-composer/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b463</guid>
        <category><![CDATA[ ARKit ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 19 May 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/05/reality-composer-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 學會這四個方法　讓你在 SwiftUI 中任意地平均佈局視圖！ ]]></title>
        <description><![CDATA[ 此文講解如何利用 SwiftUI Spacers、Stack Spacing、Alignment 等方法在 SwiftUI App 中平均地佈局視圖。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-space-view/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b462</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 12 May 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/04/space-view-swiftui-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 小技巧：如何在列表視圖隱藏 Disclosure 指示器 ]]></title>
        <description><![CDATA[ 在 UIKit 中使用表格視圖時，我們可以設置屬性來配置單元格的指示器。但在 SwiftUI ，Apple 似乎沒有提供 API 讓我們配置列表視圖中的 disclosure 指示器。在這篇教學中，你將學會如何隱藏 disclosure 指示器。 ]]></description>
        <link>https://www.appcoda.com.tw/hide-disclosure-indicator-swiftui-list/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b461</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 05 May 2021 19:18:07 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/04/hide-disclosure-indicator-swiftui-list-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 VisionKit 框架　在 SwiftUI 掃描圖片及辨識文字 ]]></title>
        <description><![CDATA[ 有了 Vision 框架，現在要執行文字掃描和辨識 (text recognition)，已經是相當容易的工作。在這篇教學中，你將學會使用 VNDocumentCameraViewController 掃描圖片，並使用 Vision 框架來辨識文字。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-text-recognition/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b460</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Wed, 28 Apr 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/04/text-recognition-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 策略模式 (Strategy Pattern)簡介　讓程式碼拓展起來更容易 ]]></title>
        <description><![CDATA[ 本篇原文（標題：Understanding the Strategy Pattern ）刊登於作者 Medium，由 Jimmy M Andersson 所著，並授權翻譯及轉載。  我們在編寫類別時，有時會用上大量看上去很相似的方法，但礙於它們在計算方式上存在關鍵的差異，讓我們無法編寫一個通用函數，而刪減其他的函數。今天，讓我帶大家看看一種設計模式，它讓我們可以創建一個函數，來管理所有函數，如此一來，我們就可以刪除那些幾乎一模一樣的方法 ── 那就是策略模式 (Strategy Pattern)。  什麼是策略模式？ 策略模式是屬於物件導向程式設計 (Object-oriented Programming, OOP) 結構，是行為模式 (behavioral pattern) 的一種，也被稱為 Policy Pattern。它背後的邏輯是，程式應該能夠延遲在運行時才選擇演算法，並在編譯器完成工作之後才執行，以免被演算過程打擾。  讓我們做個比喻，假設你要計算幾條非常困難的數學方程式，要買 4 部不同的計算機才能解決四式運算， ]]></description>
        <link>https://www.appcoda.com.tw/strategy-pattern/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b45f</guid>
        <category><![CDATA[ Design Pattern ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 21 Apr 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/03/Strategy-Pattern-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 Core ML 3.0 的 API　一步步製作個人化的塗鴉 app ]]></title>
        <description><![CDATA[ 在這幾年來，機器學習 (Machine Learning) 的應用如雨後春筍般大量地出現，也越來越貼近一般人的日常生活，包括語音、影像辨識，語意分析，行為分析等等，都跟機器學習脫離不了關係。雖然機器學習的技術在這幾年來已經十分成熟，不過手機的應用程式在這方面還是大多扮演著媒介資料的角色，由手機端接受使用者來的資料，上傳到 server 完成分析後再將結果回傳到手機端。這個資料傳遞的過程中，手機程式是跟機器學習一點關聯都沒有的。  在 2017 年的 WWDC 上，Apple 推出了 Core ML framework，讓開發者可以用非常間單的方式，將既有的機器學習 model 匯入手機 app，讓手機可以直接利用匯入的 model 來做分類或預測。這個改變讓手機上機器學習的應用有了更多可能，同時也可以讓使用者的資料在使用過程中都一直保持在手機裡，而不需要上傳到雲端。  雖然 Core ML 讓我們能夠在手機上使用已經訓練好的 model，不過如果我們想要再進一步個人化這些 model，比方說提供專屬於個人的臉部辨識功能，技術上就不是那麼的容易。除了個人的臉型資料不足以訓練出完整的 ]]></description>
        <link>https://www.appcoda.com.tw/core-ml-3/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b45e</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Huang ShihTing ]]></dc:creator>
        <pubDate>Wed, 14 Apr 2021 19:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/03/saurav-thapa-shrestha-V-yayV_rgcA-unsplash-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 ScrollViewReader　輕鬆讓滾動視圖滾動到特定位置 ]]></title>
        <description><![CDATA[ 在新版 SwiftUI 中，其中一個我最喜歡的新功能就是 ScrollViewReader。有了 ScrollViewReader 之後，我們只需要幾行程式碼，就可以使滾動視圖滾動到特定位置。 ]]></description>
        <link>https://www.appcoda.com.tw/scrollviewreader/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b45d</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 07 Apr 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/03/ScrollViewReader-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 RealityKit 和 SwiftUI　建立你的第一個 AR App ]]></title>
        <description><![CDATA[ SwiftUI 為開發者提供了一個強大且易用的工具，方便我們建構複雜的使用者界面。在這篇教學文章中，Rob 會帶大家利用 SwiftUI，搭配以 AR 為本的 RealityKit，一步步教你建立你的第一個 AR App。 ]]></description>
        <link>https://www.appcoda.com.tw/ar-app-realitykit-swiftui/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b45c</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 31 Mar 2021 19:45:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/03/ar-app-feature.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI Map 視圖　讓我們更簡單顯示地圖界面和客製化標註 ]]></title>
        <description><![CDATA[ 隨著 Xcode 12 推出，最新版本的 SwiftUI 提供了本機 SwiftUI Map 視圖。在這篇教學文章中，我會教大家在 SwiftUI 使用 Map 結構，在 App 中顯示地圖界面，並在地圖上一個特定的位置上創建客製化標註。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-map/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b45b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 24 Mar 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/02/swiftui-map-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI 構建簡單的數據視覺化工具：圓餅圖 (Pie Chart) ]]></title>
        <description><![CDATA[ 本篇原文（標題：Data Visualization With SwiftUI: Pie Charts）刊登於作者 Medium，由 Jimmy M Andersson 所著，並授權翻譯及轉載。  Apple 在 2019 年推出了 SwiftUI，為我們提供了一個輕巧易用的工具，來創建使用者界面。這系列的教學文章，會讓大家看看如何利用 SwiftUI 框架，構建簡單而漂亮的數據視覺化工具 (data visualization tool)。在第三篇文章中，我們會介紹如何構建圓餅圖 (pie chart)。  什麼是圓餅圖？ 圓餅圖（亦稱圓形圖）是一種數據可視化工具，它將每個數值按比例繪製一個圓形。就像長條圖一樣，圓餅圖可以處理分類數據，也可以展示不同類別之間的比率。  這種視覺化工具適用於以下情況：  看看你公司年度預算中，分配給各個部門的比例。了解自己如何分配月薪，像是支付房租、購買食物、和購買編程的書籍等方面。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-pie-chart/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b45a</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 17 Mar 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/02/swiftui-pie-chart-feature-story-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI 簡單構建傳統的數據視覺化工具：長條圖 (Bar Chart) ]]></title>
        <description><![CDATA[ 我們準備了一系列的教學，教大家利用 SwiftUI 框架構建漂亮的數據視覺化工具 (data visualization tool)。在第二篇文章，Jimmy 會創建傳統的長條圖 (bar chart)。這次除了應用 Path 和 Shape，還會用到不同的 Stack 元件呢！ ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-bar-chart/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b459</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 10 Mar 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/02/swiftui-bar-chart-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 iOS 14 Vision 的手勢估測功能　實作無接觸即可滑動的 Tinder App ]]></title>
        <description><![CDATA[ 本篇原文（標題：Swipeless Tinder Using iOS 14 Vision Hand Pose Estimation）刊登於作者 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  Vision 框架在 2017 年推出，目的是為了讓行動 App 開發者輕鬆利用電腦視覺演算法。具體來說，Vision 框架中包含了許多預先訓練好的深度學習模型，同時也能充當包裹器 (wrapper) 來快速執行你客製化的 Core ML 模型。  Apple 在 iOS 13 推出了文字辨識 (Text Recognition) 和 VisionKit 來增強 OCR 之後，現在將重點轉向了 iOS 14 Vision ]]></description>
        <link>https://www.appcoda.com.tw/ios-14-vision-framework-tinder-app/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b458</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 03 Mar 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/02/vision-framework-tinder-app-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 10 個 SwiftUI Libraries　為你大大提高開發速度！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：10 SwiftUI Libraries To Use In 2021）刊登於作者 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  SwiftUI 真的改變了我們設計 iOS App，以及我們對 iOS App 的印象。SwiftUI 在 WWDC 2019 亮相後，Apple 引入大量新視圖、屬性包裝器 (property wrapper) 和客製化型別，進一步完善了其功能。  但是，宣告式 (declarative) 框架仍然處於起步階段。SwiftUI 的 bugs 令我們在開發時難以使用這些框架，而且 iOS App 的 SwiftUI 進階範例仍然很少。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-libraries-2021/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b457</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 24 Feb 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/02/swiftui-libraries-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI 構建漂亮的數據視覺化工具：雷達圖 (Radar Chart) ]]></title>
        <description><![CDATA[ Apple 在 2019 年推出了 SwiftUI，為我們提供了一個輕巧易用的工具，來創建使用者界面。在這系列的教學文章中，Jimmy 會帶大家利用 SwiftUI 框架，構建簡單而漂亮的數據視覺化工具！而這篇文章就會先介紹如何構建雷達圖 (radar chart)。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-radar-chart/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b456</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 17 Feb 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/02/swiftui-radar-chart-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 SwiftUI 利用 Path 和 Shape　建立 iMessage 的對話框！ ]]></title>
        <description><![CDATA[ SwiftUI 有很多實用的小技巧，讓我們可以為 App 構建更漂亮的 UI。在這篇教學文章中，Prafulla 會教大家利用 SwiftUI 的 Path 和 Shape，來建立 iMessage 那種有尾巴的對話框 (chat bubble)。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-path-shape/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b455</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 10 Feb 2021 04:28:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2021/01/swiftui-path-shape-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 應用 SwiftUI Path API　繪製撲克牌的四種花色！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：SwiftUI: How to draw playing Cards shades using Path API?）刊登於作者 Medium，由 Prafulla Singh 所著，並授權翻譯及轉載。  在 SwiftUI 中，我們可以利用 Path 和 Shape 來客製化渲染 (rendering)，而 Path 又可以用來製作 Shape，也就是說，Path 就是基本的繪圖元素。  在這篇教學文章中，我們將會使用 SwiftUI Path 來建立撲克牌的四種花色。首先，讓我們來看看可以繪製甚麼類型的 Path。  Line&nbsp;會添加一條直線。 func addLine(to point: ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-path-draw-cards-shades/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b454</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 03 Feb 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/12/swiftui-path-draw-cards-shades-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 Swift 在 iOS 構建獨特漂亮的 QR code 視圖 ]]></title>
        <description><![CDATA[ 本篇原文（標題：Generating beautiful QR code views in iOS using Swift）刊登於作者 Medium，由 Prafulla Singh 所著，並授權翻譯及轉載。  QR Code 是一種認證技術，廣泛應用於行動科技領域中。iOS 內建支援創建帶有 Payload 的漂亮 QR Code 圖像。在本篇教學中，我們將會學習這個技巧。  QR code 的基本組件：  Payload，多數是一個網址QR code 錯誤修正功能可選公司圖片／Logo可選顏色 首先，讓我們先構建結構，然後再實作基本和漂亮的 QR Code 視圖。  struct QRCodeDataSet {     let logo: UIImage? ]]></description>
        <link>https://www.appcoda.com.tw/swift-qr-code/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b453</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 27 Jan 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/12/qr-code-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI TabView 教學：利用 PageTabViewStyle 建立 Paged Scrolling 視圖 ]]></title>
        <description><![CDATA[ 在 iOS 14 中，Apple 在 SwiftUI 框架引入了一個新的樣式：PageTabViewStyle，讓開發者創建頁面滾動 (paged scrolling) 界面。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-tabview-paged-scrolling/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b452</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 20 Jan 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/12/swiftui-tabview-paged-scrolling-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 14 的 Diffable Data Source　讓你輕鬆建立和更新大量資料 ]]></title>
        <description><![CDATA[ iOS 14 為 Diffable Data Source 帶來了一點轉變，新增了 section snapshot 和重新排序 API。在這篇文章中，Anupam 會帶我們深入探索，了解如何利用這些新功能，輕鬆地在 CollectionViews 建立和更新大量資料。 ]]></description>
        <link>https://www.appcoda.com.tw/ios-14-diffable-data-source/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b451</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 13 Jan 2021 18:02:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/12/ios-14-diffable-data-source-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 14 的 SwiftUI Toolbar　聰明地在佈局放置視圖 ]]></title>
        <description><![CDATA[ 本篇原文（標題：The SwiftUI Toolbar in iOS 14）刊登於作者 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  在 WWDC 2020，Toolbar 可以說是第二版 SwiftUI 中最有趣的新功能。  toolbar 是一個修飾器，讓你放置一組視圖控件，並把控件放置於想要的位置。  在預設設定下，SwiftUI 可以利用 toolbar 修飾器，聰明地把視圖設定於想要的位置，但你也可以利用 ToolbarItem 明確地設置其位置。  在本篇文章中，我們會看看：  對 toolbar 修飾器的需求使用 Toolbar API 自動在 bottom bar 和 navigation bar 中設定物件使用 ToolbarItem ]]></description>
        <link>https://www.appcoda.com.tw/ios-14-swiftui-toolbar/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b450</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 06 Jan 2021 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/12/swiftui-toolbar-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Flutter CI/CD 全自動化詳細解析：一個產品 App 的環境管理 ]]></title>
        <description><![CDATA[ CI/CD 自動化可以大大減少開發者的負擔，可以專注在設計 App 與介面。之前 Yuhao 跟大家分享過 iOS CI/CD 的自動化，現在 Flutter 開始大放異彩，在這篇文章中，Yuhao 會把這套核心邏輯放置到 Flutter 上，讓大家開發時可以事半功倍！ ]]></description>
        <link>https://www.appcoda.com.tw/flutter-app--e7-92-b0-e5-a2-83-e7-ae-a1-e7-90-86/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b44f</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Yu Hao Chen ]]></dc:creator>
        <pubDate>Wed, 30 Dec 2020 18:18:28 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/12/flutter-app-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 Network.framework　在 iOS 實作簡易 HTTP 伺服器 ]]></title>
        <description><![CDATA[ 有時候，我們會需要在自己的 app 裡架一個小型的 HTTP 伺服器。可能的理由有很多，像是要做 API 測試或者是要顯示網頁內容等等。有些 app 會內建一個網頁介面，讓使用者可以從別的裝置來存取內容，像是檔案或者影片之類的；有些開發類 app 則是需要一個內建伺服器來做測試環境。而因為瀏覽器（包括 WKWebView）載入本地的網頁檔、跟透過 HTTP 載入網頁的機制不盡相同，所以有時候就算是單純要顯示一個網頁檔，也會碰到必須要架伺服器的時候。  在 Apple 的官方框架裡，有強大的 URLSession 系列元件，可以讓我們輕鬆地執行網路客戶端的工作，像是發出請求與處理回應等等。而透過 URLRequest 的 httpMethod、httpBody、allHTTPHeaderFields 等屬性，它也特別支援了 HTTP 這個協定，讓我們不需要再去手動建構 HTTP 訊息。  可惜的是，URLSession ]]></description>
        <link>https://www.appcoda.com.tw/network-framework-http/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b44e</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 23 Dec 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/12/network.framework-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 14 新功能一覽　一起來配合最新的 OS 更新 App！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：An iOS 14 Checklist for Developers）刊登於作者 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  Apple 未有任何公告便發佈了 iOS 14，讓整個開發者社群都十分驚喜。無論如何，這就是需要配合最新的 OS 來更新 App 的時候了。  首先，以下是一些 iOS 14 中你應該注意的重大改變：  在首頁引進 Widget 及 App Clips。以新的 AppTrackingTransparency 框架來取代 IDFA，以作廣告追蹤之用（在撰寫本文的時候，Apple 將此功能延後至 2021 年 1 月推出）。引入了新的 Vision ]]></description>
        <link>https://www.appcoda.com.tw/ios-14-overview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b44d</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 16 Dec 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/12/ios-14-overview-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 iOS 14 處理位置權限　在 App 存取使用者的大概位置 ]]></title>
        <description><![CDATA[ 本篇原文（標題：Handling Location Permissions in iOS 14）刊登於作者 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  Apple 無疑是資料私穩方面的領導者。一直以來，位置存取 (location access) 資料都被不同的 App 錯誤使用或濫用。 這是一個安全威脅，或甚至是資料洩漏。而在 iOS 14 中，Apple 再次讓使用者好好控制自己分享的資料。  iOS 14 為 CoreLocation 框架帶來了一點改變，從現在開始，使用者可以選擇要給予準確或大概的位置存取。  在我們探討如何在 iOS 14 管理位置變化前，先來重溫 iOS 13 的位置權限 (location permission) 吧！ ]]></description>
        <link>https://www.appcoda.com.tw/ios-14-location-permission/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b44c</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 09 Dec 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/12/location-permission-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 Swift 使用 Python 構建 App　克服 Python 的缺點！ ]]></title>
        <description><![CDATA[ 隨著要處理的數據量與日俱增，Python 處理速度慢、並行處理有所侷限、和缺乏型別安全性的問題等缺點，成為了開發 App 的障礙。在這篇文章中，Anupam 會帶大家使用 PythonKit 框架從 Swift 運行 Python 程式碼，克服 Python 的缺點。 ]]></description>
        <link>https://www.appcoda.com.tw/from-swift-import-python/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b44b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 02 Dec 2020 18:22:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/11/from-swift-import-python-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 iOS 14 使用 matchedGeometryEffect　簡單為 App 建立絢麗的視圖動畫 ]]></title>
        <description><![CDATA[ 在 iOS 14 中，SwiftUI 框架引入了很多新功能，其中 matchedGeometryEffect 非常引人注目，開發者只需要幾行程式碼，就能創造絢麗的視圖動畫。 ]]></description>
        <link>https://www.appcoda.com.tw/matchedgeometryeffect/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b44a</guid>
        <category><![CDATA[ 動畫實作 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 25 Nov 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/11/matchedgeometryeffect-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 8 個無程式碼 Machine Learning 平台　讓你把 AI 想法變成實際的 App！ ]]></title>
        <description><![CDATA[ 近年無程式碼視覺化拖放工具開始出現，以彌補資料科學家的不足，並讓非技術背景的人更加容易使用人工智慧技術，發揮更多創意。在本篇文章中，Anupam 會逐一介紹幾個好用的無程式碼機器學習 (Machine Learning) 工具，讓你把 AI 的想法變成實際的 App。 ]]></description>
        <link>https://www.appcoda.com.tw/no-code-machine-learning-platforms/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b449</guid>
        <category><![CDATA[ AI ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 18 Nov 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/11/no-code-machine-learning-platform-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI Video Player　在影片實時套用 Core Image 濾鏡！ ]]></title>
        <description><![CDATA[ iOS 14 引入了 SwiftUI Video Player ，讓我們可以在純 SwiftUI App 中做影片處理。在本篇文章中，Anupam 教大家在 VideoPlayer 實時套用 Core Image 濾鏡，為影片帶來絢麗的效果！ ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-video-player/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b448</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 11 Nov 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/11/swiftui-video-player-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 iOS 相機 App 訓練 Create ML Style Transfer 模型！ ]]></title>
        <description><![CDATA[ 樣式轉換 (Style Transfer) 讓我們在一個圖像上套用另一個圖像的視覺樣式，改變圖像的構圖。在 WWDC 2020，Create ML 加入了樣式轉換模型，功能大大提升。在本篇文章中，Anupam 會帶大家建構一個 iOS App，來實時運行樣式轉換模型。 ]]></description>
        <link>https://www.appcoda.com.tw/style-transfer/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b447</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 04 Nov 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/10/style-transfer-feature-photo-1-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 Xcode 12 使用 StoreKit 測試 App 內購　讓你加速開發進度 ]]></title>
        <description><![CDATA[ 雖然 WWDC20 結束至今已經過了五個月，我們還在討論今年發佈的新框架、API、以及改善。在這麼多新功能中，有一些會對我們實作 App 內購 (In-App Purchase) 時有重大影響，那就是我們可以在 Xcode 12 中本地測試 StoreKit 的新功能。  現在，我們必須停止原本的開發流程，並到 App Store Connect 才能夠創建必要的 App 內購紀錄，以及最少一個的沙盒 (sandbox) 使用者，以作測試用途。完成我們前一篇教學文章的步驟之後，開發者就可以繼續撰寫 App 內購的相關程式碼。很明顯地，這麻煩而無可避免的步驟其實已經減慢了開發進度，更何況在後續的測試過程中，還需要多次訪問 App Store Connect，來創建更多的測試使用者。  不過好消息是，在 Xcode 12 及 StoreKit ]]></description>
        <link>https://www.appcoda.com.tw/storekit-testing/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b446</guid>
        <category><![CDATA[ in-app purchase ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Wed, 28 Oct 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/09/storekit-testing-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 用 iOS 內建的 ASWebAuthenticationSession 實作 OAuth 2.0 授權流程！ ]]></title>
        <description><![CDATA[ 我們在開發 app 的時候，有時會跟 Google 或是 Instagram 等的第三方服務做連結，以提供像是存取雲端硬碟或者分享到社群等等的功能。通常這些服務商都會提供 SDK 給開發者，讓我們的 app 可以存取一些需要使用者登入的服務，但是使用服務商 SDK 有時也會有一些風險，比如說 Facebook SDK 在今年七月就出現 bug 而造成一堆 app 閃退。還好，大部分的服務商都有實作一種叫做 OAuth 的開放授權機制，讓我們不需要透過服務商 SDK 也可以 DIY 授權流程。  什麼是 OAuth？ OAuth 是一個針對第三方授權的開放協定。所謂的第三方授權，就是指像 Google 與 Instagram 這樣的網路服務，將使用者存在上面的資料授權給第三方軟體（又稱為客戶端，比如我們的 app）使用的行為。 ]]></description>
        <link>https://www.appcoda.com.tw/ios-oauth/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b445</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Thu, 22 Oct 2020 18:18:20 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/10/ios-oauth-2-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 動畫入門教學： 建立一個下載指示器 ]]></title>
        <description><![CDATA[ 即使有經驗的開發者，要處理一個滑動動畫也不是一件容易的事。SwiftUI 框架簡化了 UI 動畫與轉場開發過程，讓你簡單地製作出流暢且漂亮的動畫。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-animation-intro/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b444</guid>
        <category><![CDATA[ 動畫實作 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 14 Oct 2020 18:03:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/10/swiftui-animation-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift iOS App 開發技巧：如何防止用戶螢幕截圖和錄製 ]]></title>
        <description><![CDATA[ 現在是手機時代，所有東西都有手機 App。雖然這真的很方便，但在使用這些 App 的同時，也有機會暴露大量機密信息。在這篇文章中，Shashank 會帶大家在 iOS App 中檢測/防止螢幕截圖和錄製的動作，以確保 App 不會造成隱私和安全性的問題。 ]]></description>
        <link>https://www.appcoda.com.tw/secure-ios-app/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b443</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 07 Oct 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/10/Photo-by-CardMapr-on-Unsplash-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Core Image 濾鏡應用：結合 SwiftUI 找出圖像差異 ]]></title>
        <description><![CDATA[ 本篇原文（標題：Image Difference Using Computer Vision in iOS 14 ）刊登於作者 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  人的眼睛是很容易接受視覺呈現的東西，同樣地，電腦視覺就是讓系統能夠理解並處理圖像。  Core Image 和 Vision 是 iOS 電腦視覺的兩大框架。在 WWDC 2020 中，Apple 為這兩個框架添加了許多新功能。  現在 iOS 14 的 Core Image，新增了一些內建的圖像處理濾鏡。舉例來說，其中一個新增的 CIColorThreshold 濾鏡，讓我們可以設定閾 (threshold) 值，來將圖像轉換為黑白。另外 CIColorThresholdOtsu ]]></description>
        <link>https://www.appcoda.com.tw/ios-14-core-image/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b442</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 30 Sep 2020 18:28:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/09/Photo-by-Jonathan-Kemper-on-Unsplash-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Figma 教學：讓技術開發人員都能輕鬆實作畫面設計 ]]></title>
        <description><![CDATA[ Figma 是一個非常容易使用的 UI/UX 設計工具，不管是不是專業的 UX/UI 設計師，開發者都可以去使用和實作畫面設計。在這篇文章中，Gavin 將會和大家分享使用 Figma 設計 UI/UX 的經驗，讓你也可以發展在畫面設計領域的能力，不再只專注於編寫程式碼。 ]]></description>
        <link>https://www.appcoda.com.tw/figma/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b441</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Thu, 24 Sep 2020 06:36:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/09/Photo-by-Alvaro-Reyes-on-Unsplash-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 14 AI 框架新功能　讓你製作出更好的 AI iOS App！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：Advancements in Artificial Intelligence in iOS 14）刊登於作者 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  Apple 近幾年一直推動 AI 相關領域的發展，WWDC 2020 也推出了不少推動 AI 的功能。  Apple 在各個內建框架，包括機器與深度學習 (machine and deep learning)、電腦視覺 (computer vision)、及自然語言處理 (natural language processing)，引入了許多新功能及改善，來幫助手機 App 開發者製作出更好的 AI iOS App。（延伸閱讀：Here’s why ]]></description>
        <link>https://www.appcoda.com.tw/ios-14-ai/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b440</guid>
        <category><![CDATA[ AI ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 16 Sep 2020 19:45:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/08/ios-14-ai-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 LibraryContentProvider 重用 SwiftUI 視圖　大大加速開發過程！ ]]></title>
        <description><![CDATA[ Apple 在 WWDC 2020 帶來了許多新功能和改善。在本篇文章中，Gabriel 會帶大家探索新的 LibraryContentProvider 功能，以隨插即用的方式，讓開發者在不同專案中重用 SwiftUI 視圖與修飾器，甚至是分享給其他開發者，大大加速開發過程。 ]]></description>
        <link>https://www.appcoda.com.tw/librarycontentprovider/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b43f</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Wed, 09 Sep 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/08/LibraryContentProvider-feature-photo-by-pontus-wellgraf-scaled-e1599276102241.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 14 Vision Framework 新功能　建構更有趣和真實的使用者體驗！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：What’s New in the Vision Framework in iOS 14）刊登於作者 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  在 WWDC 2020 有幾項相當有趣的發表，當中 SwiftUI 2.0 的改善、以及 Mac 將從現在的 Intel 處理器過渡到自家的 Apple Silicon，都成為了最多人談論的話題。  但這不會阻止 Apple 發展電腦視覺 (computer vision) 的野心，Vision 框架在 iOS 14 又增加了許多令人興奮的功能。  從 iOS 13 ]]></description>
        <link>https://www.appcoda.com.tw/ios-14-vision-framework/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b43e</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 02 Sep 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/08/ios-14-vision-framework-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 14 新功能： Vision Contour Detection　讓你建構電腦視覺處理 App ]]></title>
        <description><![CDATA[ 本篇原文（標題：New in iOS 14: Vision Contour Detection ）刊登於作者的 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  Apple 在 WWDC 2020（線上版）開發者大會中響起了平地一聲雷，釋出了許多讓人驚喜的新功能，（延伸閱讀：Apple’s own silicon chips for Macs），包括 SwiftUI、ARKit、PencilKit、Create ML 還有 Core ML。但是其中，對我來說最突出的是電腦視覺處理 (computer vision)。  Apple 推出了一系列新 API 之後，Vision 框架得到了更完善的支援。 ]]></description>
        <link>https://www.appcoda.com.tw/vision-contour-detection/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b43d</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 26 Aug 2020 18:48:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/08/Vision-Contour-Detection-feature-photo-1-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 14 UICollectionView 新功能　讓我們跟 Cell Item Identifier 說再見！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：What’s New in iOS 14’s UICollectionView?）刊登於作者的 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  雖然在 WWDC 2020 沒有介紹 SwiftUI 引入 Collection View 的消息，但這無阻 UICollectionView 新增強大的新功能。  iOS 13 時，在 CollectionViews 中引進 CompositionalLayouts 與 DiffableDataSources，為 UICollectionView 的建構 Layout 以及 DataSources 帶來更多的彈性。  到了 iOS 14，CollectionView API ]]></description>
        <link>https://www.appcoda.com.tw/ios-14-uicollectionview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b43c</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 19 Aug 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/08/iOS-14-UICollectionView-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 EarlGrey 做 UI Test　強化你的 UI 測試流程 ]]></title>
        <description><![CDATA[ 在軟體的開發過程中，我們一定會需要測試我們做出來的東西是不是運作正常。以手機開發為例，我們通常都是咻咻咻地寫好一堆程式之後，把它丟到手機或模擬器上面執行，然後東點一點西點一點，看看是不是一切都運作正常。這樣的流程雖然運作正常，但是卻非常花時間，而且很容易漏掉該測試的項目。如果要簡化這個流程，你就會需要電腦來幫你做自動化測試 (Test Automation)。  自動化測試有分很多類型，目前大家最常使用的分類法是用 Mike Cohn 所提出來的測試金字塔 (Test Pyramid)，它根據自動化測試的細分程度，由下往上排成一個金字塔形狀（如下圖）。最上面的是 UI Test，也就是讓電腦直接操作 UI 並且根據 UI 上的狀況做判斷，整合度最高、最貼近使用者看到的樣子，但如果出錯的話，你沒辦法馬上得知出錯的是哪個環節。最底下的是 Unit Test ，就是針對程式裡面的最小單元做測試，它最容易被實現、並且每一個單元的測試都是獨立運作的，所以你可以得到細分到某個 function 的結果。中間的是 Integration Test，就是把元件一個一個組裝起來之後做整合性的測試，細分度介於上下兩個中間。 ]]></description>
        <link>https://www.appcoda.com.tw/earlgrey/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b43b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Huang ShihTing ]]></dc:creator>
        <pubDate>Wed, 12 Aug 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/08/EarlGrey-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 超越沙盒限制：不透過 Mac App Store 都可以簽署並發佈 macOS App ！ ]]></title>
        <description><![CDATA[ 因為 OS X Mojave（特別是 Catalina）問世、以及 Apple 對 App 公證 (Notarization) 的要求，讓我們這些資深的 macOS 開發者開始擔心，Apple 會否禁止開發者自行發佈 App 的流程。你們可能都曾經試過在網站上直接下載 macOS 軟件，也就是說不需要從 Mac App Store 來下載。但是你有仔細想過這件事嗎？  我們無法從 iOS App Store 以外的地方下載 iOS App；雖然有 Apple Developer Enterprise Program 這種特別情況，不過那只能夠允許大型組織開發內部專用的 App，並且配置給他們的員工所使用。你有試過下載像是 Skype、Zoom、Atom ]]></description>
        <link>https://www.appcoda.com.tw/distribute-macos-app/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b43a</guid>
        <category><![CDATA[ macOS ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Wed, 05 Aug 2020 18:28:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/07/distribute-macos-app-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 用 Swift 建造自己的輕量級 Dependency Injection 與 Inversion Of Control！ ]]></title>
        <description><![CDATA[ 你聽過依賴注入嗎？身為 iOS 的開發者，是否對於依賴注入 (Dependency Injection) 與反轉控制 (Inversion Of Control) 的設計模式感到心動呢？接下來就讓我們手把手，不依賴第三方類別庫，打造屬於自己的輕量級 DI 與 IoC，增加程式碼的可讀性與可測試性，也一併提升可維護性與彈性。這篇文章建議大家搭配源碼閱讀。  什麼是依賴注入與反轉控制？ 我知道大家都很期待如何在 Swift 中實現這些設計模式，不過別急，讓我們先來了解這些設計模式與使用的好處。  反轉控制 (IoC, Inversion Of Control) 這邊常常聽著就有點繞舌，大家可以稍微記住一個概念，所謂控制是對於整個程式碼執行的流程與順序；而反轉代表沒有使用框架之前，是由工程師自己控制整個程式碼的執行。使用框架之後，執行流程可以由框架來控制，控制權由工程師「反轉」到了框架上。  當然，框架也是其他工程師寫出來的，所以只要確認目前你需不需要自己控制流程細節，或者框架幫你決定，就可以判斷出是不是有 IoC 的設計。  依賴注入 ]]></description>
        <link>https://www.appcoda.com.tw/dependency-injection/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b439</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Yu Hao Chen ]]></dc:creator>
        <pubDate>Wed, 29 Jul 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/07/di-ioc-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 UIViewControllerRepresentable 協定　在 SwiftUI 存取相簿並使用相機 ]]></title>
        <description><![CDATA[ 如果我們要在 App 中使用相機或訪問相簿 (photo library)，該如何將 UIImagePickerController 類別整合到 SwiftUI 視圖中呢？在這篇文章中，我們會利用 UIViewControllerRepresentable 協定達成目的，允許 App 訪問相簿和相機。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-camera-photo-library/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b438</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 22 Jul 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/07/swiftui-camera-photo-library-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Xcode 12 和 Swift 5.3 新功能詳解　讓你寫出更強大的程式碼！ ]]></title>
        <description><![CDATA[ WWDC 2020 上個月首次在前所未有的條件下完成，全球所有開發者都有機會坐在前排，了解 Apple 今年即將發佈的所有新功能和改進。與往常一樣，Apple 介紹了許多新東西和大進步，相信我們每個人都非常興奮，希望作很多新嘗試。  這篇文章旨在介紹 Xcode 和 Swift 的新版本。 Xcode 12 的第一個 beta 版本在第一天就提供給開發者，讓每個人都有足夠的時間下載並試用。它帶著很多舊版本中缺少的新功能和工具，而這些都將對整個開發過程有很大幫助。  Xcode 12 也包含了 Swift 5.3 版本的 Bundle。Swift 語言發展得越強大，我們獲得的功能就越多，從而編寫出更好、更安全、更清晰、更強大的程式碼。 Swift 再次帶來了改進，這對所有開發者都十分有用。  所以現在，我們準備重點介紹 Xcode 12 和 Swift 5. ]]></description>
        <link>https://www.appcoda.com.tw/xcode-12-swift-53/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b437</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Tue, 14 Jul 2020 18:08:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/07/xcode-12-swift-53-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI 建立 Expandable List View　並探索 Inset Grouped 樣式！ ]]></title>
        <description><![CDATA[ 在 iOS 14 中，Apple 繼續改善列表視圖，並添加了一些新功能。在本篇教學文章中，我將會帶大家建構一個 Expandable List View 或 Outline View，並探索 Inset Grouped 這個列表樣式，讓你看看這個過程有多容易。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-expandable-list-view/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b436</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Fri, 10 Jul 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/06/swiftui-expandable-list-view-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 小技巧：簡單在列表視圖移除分隔線 (Line Separator) ]]></title>
        <description><![CDATA[ SwiftUI 的列表視圖 (List View) 其實和 UIKit 的表格視圖 (Table View) 很類似，它們都是讓開發者把項目一列列地呈現，而預設設定上，每一列資料都會用分隔線 (line separator) 分開。在 UIKit 中，我們可以很簡單地改變分隔線的外觀與顏色；然而，SwiftUI 就沒有一個官方方法來移除分隔線。這麼一來，我們需要使用 UIKit API 來調整在 SwiftUI 列表視圖的分隔線。在本篇文章中，我們將會看看如何實作！  編者備註：如果你還不熟悉 SwiftUI，可以先閱讀我們的入門教學。  在 UIKit 移除分隔線 在 UIKit 中，若要在表格視圖內隱藏或移除分隔線，我們可以把表格視圖的 separatorColor 屬性設為 .clear：  tableView.separatorColor = .clear ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-remove-line-separator-list/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b435</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 08 Jul 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/07/swiftui-remove-line-separator-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 使用 UIViewRepresentable 協定　讓你輕鬆建立 SwiftUI TextView ]]></title>
        <description><![CDATA[ 我非常喜歡使用 SwiftUI 框架，但是，與多數的新框架一樣，SwiftUI 也有一個缺點，就是它未能提供所有 UIKit 有的 UI 控件，比如說，你無法在 SwiftUI 找到與文本視圖 (text view) 相對應的控件。幸好，Apple 有一個 UIViewRepresentable 協定，讓你可以輕鬆打包 (wrap) 一個 UIView，並讓 SwiftUI 專案使用。  在本篇文章中，我們會利用 UIViewRepresentable 從 UIKit 打包 UITextView，來創建一個文本視圖。   編者備註：如果你還不熟悉 SwiftUI，可以先閱讀我們的入門教學。另外，iOS 14 將會提供原生 TextEditor 以支援多行文字輸入 。如你正在開發的 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-textview-uiviewrepresentable/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b434</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 01 Jul 2020 18:31:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/06/UIViewRepresentable-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 教學：利用 LazyVGrid 和 LazyHGrid　簡單步驟創建集合​​視圖 ]]></title>
        <description><![CDATA[ 新版的 SwiftUI 加入不少新功能。上年推出的 SwiftUI 還未支援 UICollectionView，要做 grid 佈局就唯有自己開發。隨 iOS 14 推出的 SwiftUI 就加入了 LazyVGrid 和 LazyHGrid，讓我們只要幾行程式碼，就可以做出不同類型的 Grid 佈局。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-lazyvgrid-lazyhgrid/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b433</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Fri, 26 Jun 2020 15:21:31 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/06/LazyVGrid-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 教學：使用 SwiftUI 來打造 Search Bar 原來那麼簡單！ ]]></title>
        <description><![CDATA[ 最近，我收到一個問題，關於在 SwiftUI 專案中實作 Search Bar。與 UIKit 不同，SwiftUI 沒有內建的 Search Bar 物件可以使用。你或許可以使用 UIViewRepresentable 協定，以在 SwiftUI 專案中重用 UIKit 的 UISearchBar。但要使用純 SwiftUI 的方式來實作一個 Search Bar，其實並不困難。在這次的教學中，就讓我們來建立一個 SwiftUI 版的 Search Bar！  看看以下這張圖片，我們即將要打造一個這樣的 Search Bar。它看起來跟 UIKit 的 UISearchBar 沒什麼兩樣。而我們還會實作一個 Cancel 按鈕，按鈕只會在使用者開始在搜索欄打字時才會出現。    編者備註： ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-search-bar/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b432</guid>
        <category><![CDATA[ SwiftUI 框架 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 24 Jun 2020 18:02:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/06/swiftui-search-bar-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 13 種實用 Xcode Shortcuts （快捷鍵）　讓你大大提升工作效率！ ]]></title>
        <description><![CDATA[ Xcode IDE 一定是開發者最常接觸的平台，你有沒有想過只要每天花一點時間熟習 Xcode Shortcuts （快捷鍵），其實可以為你省下更多時間？在這篇文章中，Anupam 會為我們簡單介紹 13 種 Xcode Shortcuts，讓你大大提升工作效率。 ]]></description>
        <link>https://www.appcoda.com.tw/xcode-shortcuts/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b431</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 17 Jun 2020 18:28:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/06/xcode-shortcuts-feature-photo-by-Gustas-Brazaitis-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI Path　輕鬆建立漂亮的折線圖！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：Create a Line Chart in SwiftUI Using Paths）刊登於作者的 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  SwiftUI 框架於 WWDC 2019 推出，讓 iOS 社群十分興奮。這個以 Swift 所寫的宣告式 (declarative) API 容易使用，讓開發者可以快速建構 UI 原型 (prototype)。  儘管我們可以利用 Shapes 協定從零開始建構直條圖 (Bar Chart)，但卻無法以同樣方式建構折線圖。幸好，我們有 Paths 結構來達成目的。  SwiftUI 的 Path 類似與 Core ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-path/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b430</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 10 Jun 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/06/swiftui-path-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Computer Vision ：利用矩形偵測和文字辨認　打造一個掃描信用卡的 App ]]></title>
        <description><![CDATA[ 本篇原文（標題：Scanning Credit Cards with Computer Vision on iOS）刊登於作者的 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  自 iPhone 問世以來，攝影功能一直是 Apple 專注的核心。幾年下來，他們釋出了許多驚艷的功能，讓大家無法捨離 iPhone。因為 Apple 不斷增加圖像智能功能，讓使用者能夠拍出更好的相片。  具體來說，Apple 在電腦視覺領域大量投資，其 2017 年釋出的 Vision 框架，也會每年推出重大更新。  Apple 推出了臉部偵測 (face detection)、物件追蹤 (object tracking)、捕捉品質 (capture quality) ]]></description>
        <link>https://www.appcoda.com.tw/computer-vision/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b42f</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 03 Jun 2020 18:12:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/05/computer-vision-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 5.3 新功能預覽　大大提高整體語言的品質和性能 ]]></title>
        <description><![CDATA[ Swift 5.3 的發佈過程已經開始了，這次的新版本將大大提高整體語言的質量和性能，並使 Swift 支援 Windows 和 Linux 等多個平台。在這篇文章中，Ilario 會向大家詳細解釋每一個新功能，看看新版本到底可以解決甚麼問題吧！ ]]></description>
        <link>https://www.appcoda.com.tw/swift-5-3/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b42e</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 27 May 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/05/swift-5.3-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 教學：利用 iPad 的 Swift Playgrounds 都可以學習 App 開發！ ]]></title>
        <description><![CDATA[ 自從 Swift Playgrounds v3.1 發佈後，Apple 增加了對 SwiftUI 的支援。很多讀者會問我們，可以用 iPad 來學 SwiftUI 嗎？在這篇文章中，你將親身體驗利用 Swift Playgrounds 寫一個簡單的範例 App，看看這個教育工具的好處與限制吧！ ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-swift-playgrounds-ipad-mac/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b42d</guid>
        <category><![CDATA[ iPadOS ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 20 May 2020 18:28:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/05/swift-playground-for-ipad-swiftui-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 5.2 初探：有甚麼嶄新的功能等著你去探索？ ]]></title>
        <description><![CDATA[ 本篇原文（標題：What’s incipient in Swift 5.2 ）刊登於作者 Medium，由 Megha Aneja 所著，並授權翻譯及轉載。  隨著 Apple 推出 Xcode 11.4，Swift 5.2 也正式發佈了。  這次的版本對開發人員可說是福音，因為它著重於改善開發人員的體驗。借助改善了的診斷功能，開發人員可以更快地解決錯誤。現在，程式碼完成功能 (Code completion) 運作得更好，而且程式碼的大小和記憶體使用量也減少了。  在本篇文章中，我們將會快速地看看最新版本語言的改變！讓我們開始吧！  函數式 Key Path Expression Swift Evolution 提案 SE-0249&nbsp;推出了一個 Shortcut， ]]></description>
        <link>https://www.appcoda.com.tw/swift-5-2/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b42c</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 13 May 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/05/swift-5.2-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 教學：認識 Higher Order Functions 高階函數（Reduce 和 FlatMap） ]]></title>
        <description><![CDATA[ Swift 是種富含多種特性的語言，當中有一個不能錯過的良好特性，就是高階函數 (higher order functions)。在本篇文章中，我會介紹十個常見的高階函數，並透過簡單的範例教你實作。你會發現使用高階函數可以減少我們所需要的程式碼，並讓程式碼變得更加清晰及有效率！ ]]></description>
        <link>https://www.appcoda.com.tw/higher-order-function/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b42b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Wed, 06 May 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/04/higher-order-functions-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 淺談回應鏈 (Responder Chain)　讓你認識這個靈活又實用的設計模式！ ]]></title>
        <description><![CDATA[ 在 UIKit 當中負責處理使用者動作的東西，叫做回應鏈 (Responder Chain)。回應鏈是由許多部件一起組成的一個複合元件，包括 view、view controller、window、application 等等。這些元件經由單向鏈結串列 (singly linked list) 的架構連接在一起，使得接收動作與處理動作的物件可以不用是同一個。下層的元件接收到使用者動作之後，可以選擇把動作往上層傳，讓上層的物件去攔截動作並處理（「回應」）。這樣的架構使回應鏈的變化彈性極大，隨時可以插入或移除 view 或 view controller 等的節點，卻還是保有它的整體性。  回應鏈是一個單向鏈結串列，用來處理使用者動作。  我們可以用類型繼承來類比回應鏈的設計。類型繼承也是一種單向的鏈結串列，由子類型單方向地指向父類型。子類型可以透過父類型所定義的介面接收訊息，並且可以決定要攔截訊息，或者是把訊息轉傳給父類型處理。而回應鏈則是透過 UIResponder 的介面來接收訊息，並由每個物件決定要攔截訊息，還是要轉傳給上一層處理。  UIKit 的回應鏈架構 在 Smalltalk MVC ]]></description>
        <link>https://www.appcoda.com.tw/responder-chain/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b42a</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Thu, 30 Apr 2020 18:28:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/04/responder-chain-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 教學：利用 WebSocket 打造一個 Bitcoin 價格即時更新 App ]]></title>
        <description><![CDATA[ 隨著 iOS 13 發佈，Apple 在 URLSession 及 Network 網路框架裡介紹了 WebSocket。這次，我們會建立一個基於 SwiftUI 和 Combine 的 App，利用 WebSocket 接收 API 回傳的 Bitcoin 即時價格更新，讓你看到它在資料傳輸有多快！ ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-websocket/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b429</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 22 Apr 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/04/websocket-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 2020 第一季最觸目的 10 個 iOS Projects　啟發你創建更酷的項目！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：Top 10 Trending iOS Projects at the Start of 2020）刊登於作者 Medium，由 Anupam Chugh 所著，並授權翻譯及轉載。  2020 年的第一季度已經結束了。由於新型冠狀病毒持續爆發，相信大家都很可能正在在家工作吧。  WWDC 2020 離我們不遠了，而且這次現場直播會議有很多值得期待的地方。在我們耐心等待新的 iOS 14 功能推出的同時，讓我們回顧一下，那些已經發佈了的 iOS 專案有多棒吧！  從 ARKit 到 SwiftUI，我們都可以看到有不少出色的專案，我希望這些專案能啟發你創建一些自己的項目。  1. Baraba 第一個要介紹的，是一個很有趣的 iOS 程式庫，它利用 ARKit 和 ]]></description>
        <link>https://www.appcoda.com.tw/trending-ios-projects-2020/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b428</guid>
        <category><![CDATA[ ARKit ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 15 Apr 2020 18:28:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/04/ios-projects-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ GraphQL 教學：為你迭代快速的專案　提供最適合的解決方案！ ]]></title>
        <description><![CDATA[ 近年 GraphQL 非常火紅，它是一個由 Facebook 開發、而且公開的資料查詢語言。GraphQL 強大的彈性，對於迭代快速、功能複雜的公司來說，可以說是一個非常值得嘗試的工具。在這篇文章中，我會為大家介紹這個工具，並帶你動手做一個簡單的 GraphQL＋SwiftUI 專案！ ]]></description>
        <link>https://www.appcoda.com.tw/graphql/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b427</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Huang ShihTing ]]></dc:creator>
        <pubDate>Thu, 09 Apr 2020 18:28:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/04/GraphQL-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 13 Dark Mode 教學：為 App 配置 Dark Mode 讓使用者體驗更進一步 ]]></title>
        <description><![CDATA[ 我想你都已經聽說過 iOS 13 的深色模式 (Dark Mode)，就是使用者介面顏色變暗的模式。這個模式可以改善光線不足時的可見性，並減少 App 的能源消耗，讓你的 App 有更豐富的使用者體驗。 ]]></description>
        <link>https://www.appcoda.com.tw/dark-mode-ios13/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b426</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 01 Apr 2020 18:38:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/03/dark-mode-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 Swift 利用 Forward Pipe Operator　達成複雜的自動化流程！ ]]></title>
        <description><![CDATA[ 在類 Unix 系統的終端機 shell 裡，有一個功能叫做管線 (pipeline)，可以把A程式的輸出口與 B 程式的輸入口串接起來，使 A 與 B 變成連動的程式。  比如說，我們可以把 ls -al（把當前資料夾底下全部的檔案用列表方式列出來）跟 less（具備上下捲動功能的閱讀器）用管線串在一起，就可以用 less 去閱讀檔案列表了：  ls -al | less 在這行命令當中，| 就是所謂的管線運算子，把前面程式的標準輸出 (stdout) 傳遞給後面程式的標準輸入 (stdin)。ls -al 的標準輸出就是檔案列表的文字，而 less 就會讀取這些文字並顯示出來。  透過管線運算子，我們可以把好幾個命令列程式組合在一起，用來達成更複雜的自動化流程。最棒的是，管線的語法相當直覺易懂，寫起來就像是真的在接水管一樣，把資料串流下去。事實上， ]]></description>
        <link>https://www.appcoda.com.tw/forward-pipe-operator/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b425</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 25 Mar 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/03/james-mckinven-B3FwR-Hf9w8-unsplash-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 簡單解釋 Any 與 AnyObject 的差別　讓你快速掌握這兩個概念！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：Any &amp; AnyObject in iOS）刊登於作者 Medium，由 Nitin Aggarwal 所著，並授權翻譯及轉載。  每次編寫程式碼時，我們都會處理實例 (instance) 或類型 (type)。在非特定型別的情況下，我們會選擇 Any 或 AnyObject。  Any 和 AnyObject 的差別 Any：它可以代表任何型別的類別 (class)、結構 (struct)、列舉 (enum)，包括函式和可選型別，基本上可以說是任何東西。  AnyObject：它指的是類別的任何實例。這只在使用參考型別 (reference type) 時，才能派上用場。這就相等於 Objective-C 中等的 ‘id’。  如果你的字典只會在 Swift ]]></description>
        <link>https://www.appcoda.com.tw/any-anyobject/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b424</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Thu, 19 Mar 2020 18:56:51 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/02/anyobject-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 教學：運用不同 UI 元件　輕鬆建立一個電影預告片 App ]]></title>
        <description><![CDATA[ 本篇原文（標題：Building Movie Trailer App Using SwiftUI）刊登於作者 Medium，由 Shankar Madeshvaran 所著，並授權翻譯及轉載。  Apple 在 WWDC19 介紹了最新的開發框架，其中之一就是 SwiftUI 以及 Combine。如果你還沒有知道這個消息，簡單來說，SwiftUI 是一種新的方法，讓我們可以藉由宣告方式來創建 UI；而 Combine 是與它一起使用的，Combine 提供了宣告式 Swift API，以處理像是 UI 或是 Network 事件的值。  如果你是剛接觸 SwiftUI，我推薦你可以閱讀這篇文章來瞭解它的基礎概念。  譯者備註：如果你不熟悉 Combine 和 SwiftUI，也可以參考我們之前這篇和這篇的教學文章。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-movie-trailer-app/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b423</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 11 Mar 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/03/swiftui-movie-trailer-app-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS App 環境管理 : 靈活運用 Xcode Scheme、GitLab 和 Fastlane 設置不同的開發環境 ]]></title>
        <description><![CDATA[ 真正產品化的 App，通常都有不同的環境與配置 (Debug, Staging, Release)。上線後測試功能分流，一般實驗時可以很容易上手 CI/CD，但實戰中則需要更複雜且靈活的設置。這篇教學會深入討論 Xcode Scheme、GitLab CI/CD 等設置，並配置 fastlane 將程式碼推送到 GitLab，讓它幫我們在不同環境中執行各個事項，像建置、打包、根據環境推送到不同的 App Store 項目中等等。 ]]></description>
        <link>https://www.appcoda.com.tw/ios-app--e7-92-b0-e5-a2-83-e7-ae-a1-e7-90-86/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b422</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Yu Hao Chen ]]></dc:creator>
        <pubDate>Wed, 04 Mar 2020 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/04/App------feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift Package Manager 實用指南　讓你有效率地重複使用元件！ ]]></title>
        <description><![CDATA[ 自 Xcode 11 起，Apple 已經把建立及管理 Swift Package 的功能整合進 Xcode 中（也就是Swift Package Manager），讓開發者得以快速並直接地處理這些過程。我們將從頭開始建立一個 Swift Package，讓你日後輕易又有效率地重複使用元件。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-package-xcode/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b421</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Wed, 26 Feb 2020 18:08:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/02/swift-package-xcode-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 教學：認識手勢 (Gestures) 和 @GestureState ]]></title>
        <description><![CDATA[ 如果你曾試過使用 SwiftUI 框架，你可能已對手勢操作有初步認識。最常見的，就是用 onTapGesture 修飾器來處理使用者的觸控並做出相對的回應。此教學，我們將會深入來看如何在 SwiftUI 中處理不同的手勢(Gestures)。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-gestures/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b420</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 19 Feb 2020 18:28:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/02/swiftui-gestures-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 簡單解決 Xcode 11.3 的 Bug：無法把間距約束設為零？ ]]></title>
        <description><![CDATA[ 如果你已經把 Xcode 升級到 11.3 版本，你會發現當你使用 Interface Builder 創建 App UI 時，無法將間距約束條件 (spacing constraints) 的值設置為零。你可以打開 Interface Builder，然後點擊 &#8220;Add new constraints&#8221; 來試試看，將其中一個約束條件設置為 0 後，它卻自動將其恢復為 standard。  針對這個問題，我們收到很多讀者的提問。不用擔心！這不是你的錯，而是 Xcode 11.3 的一個 bug。根據 Xcode 11.4 的 release note，這個 ]]></description>
        <link>https://www.appcoda.com.tw/xcode-11-3-layout-constraint-zero/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b41f</guid>
        <category><![CDATA[ Auto Layout ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Sat, 15 Feb 2020 05:10:28 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/02/xcode-11-3-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 小技巧：透過 PreferenceKey 簡單對齊視圖 ]]></title>
        <description><![CDATA[ SwiftUI 優點多不勝數，但當中你可能錯過了一個很聰明的工具 ── Preferences，尤其是 PreferenceKey 協定。我會透過一個簡單的例子，向大家介紹如何利用 PreferenceKey 對齊視圖。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-preferencekey/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b41e</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 12 Feb 2020 18:55:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/02/swiftui-preferencekey-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 善用 Static Factory Method 重構程式碼　讓它更流暢好讀！ ]]></title>
        <description><![CDATA[ 在使用一個物件之前，我們經常會需要對其進行設定。比如說，使用一個 UIView 之前，有時我們會需要指定它的背景色彩等屬性：  class ViewController: UIViewController {     override func loadView() {         // 建構一個 UIView 物件。         let view = UIView()         // 設定 view。         view.backgroundColor = .systemRed         view.layer.cornerRadius = 5         view.layer.masksToBounds = true         // 指派 view 給 self.view。         self.view = view     } } 這些設定程式碼跟其它的邏輯程式碼是相當不同的存在。它們往往只跟被設定的那個物件有關，像這裡就是只跟 view 有關，跟 ViewController 無關。所以，要重構它們也是相對上簡單的。 ]]></description>
        <link>https://www.appcoda.com.tw/static-factory-method/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b41d</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 05 Feb 2020 20:08:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/01/static-factory-method-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI 元件　大幅簡化 TabView 的管理流程！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：How To Build Tab and Split Views in SwiftUI ）刊登於作者 Medium，由 Keith Lander 所著，並授權翻譯及轉載。  像 Wikipedia 和 Facebook 這樣多模式 App，會使用 TabBar 介面來讓使用者從不同操作模式中切換，例如 Wikipedia 上有 History、Places、Saved、Search 四個 Tab。一般來說，我們會將 TabBar 與 UITabBarController 物件結合使用，但也可以在 App 中將它們用作獨立控件。TabBar 總是出現在螢幕最底部，並顯示一個或多個  UITabBarItem 物件。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-tabview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b41c</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 29 Jan 2020 19:22:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/01/swiftui-tabview-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 教學：如何建立星際大戰透視文字（Perspective Text） ]]></title>
        <description><![CDATA[ SwiftUI 框架已正式推出了大約五個月。 如果您仍未試用這個新框架，跟著本文一一步一步做就可以創建你第一個 SwiftUI 程式。本教學將告訴你如何以 Text 來呈現資訊。你將會學到如何運用不同顏色、字體、背景與旋轉效果來自訂文字。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-text-perspective/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b41b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Tue, 21 Jan 2020 20:09:02 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/01/cvmaxt672ss.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用尺寸類別 (Size Classes) 建構自適應佈局　靈活為不同螢幕尺寸做開發 ]]></title>
        <description><![CDATA[ 本篇原文（標題：Building Adaptive Layout with Size Classes — Programmatically）刊登於作者 Medium，由 Batikan 所著，並授權翻譯及轉載。  以前，建構用於 iOS 的使用者介面非常容易，因為只有一種 iPhone 尺寸。但隨著時代的演進，我們現在會遇到許多不同 iPhone 的螢幕尺寸以及方向。  試想像一下，當我們要把在佈局顯示於不同尺寸的螢幕上，要如何對佈局進行調整？  為了達到這個目的，我們必須針對每個視圖元素，開發各自的條件 (condition) 和控制機制 (control mechanism) 才行。  Apple 從 iOS 8 開始導入了尺寸類別 (Size Class)，用來統整所有裝置的螢幕尺寸和方向，並區分為兩個類別。  簡單來說，Apple 提出了一個新的範例。與其去根據多種裝置類型、 ]]></description>
        <link>https://www.appcoda.com.tw/size-classes/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b41a</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 15 Jan 2020 18:12:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2020/01/size-class-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 Google Maps 上繪製曲線 (Curved Lines)　風格新穎又省錢！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：Creating Curved Lines in Google Maps）刊登於作者 Medium，由 Ryan NHP 所著，並授權翻譯及轉載。  你知道嗎？當你在 Google Maps 使用 Google Directions APIs 繪製從位置 A 到位置 B 的路線時，費用非常高昂。  目前有些公司將真實路線轉換為像 Uber 那樣的直線，或者像 Deliveree 那樣的曲線。  因此，我認為本篇文章對以下讀者有所幫助：  想要畫出新風格的路線不想付錢到 Google Maps 的口袋裡 如何繪製一條曲線？ 如果要畫一條直線將 A 點連接到 B 點，我們需要知道 A 點和 ]]></description>
        <link>https://www.appcoda.com.tw/google-maps-curved-lines/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b418</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 08 Jan 2020 18:08:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/12/google-maps-curved-lines-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 實作客製化 Apple Shortcuts 圖示系統　打造出色的使用者體驗 ]]></title>
        <description><![CDATA[ 本篇原文（標題：How I Created Apple’s Shortcuts Icon System）刊登於作者 Medium，由 Hassan El Desouky 所著，並授權翻譯及轉載。  簡介 在本篇教學中，我將會分享如何創造一個在許多 App 中常見的圖示創建系統。我相當喜歡 Apple 的捷徑 (Shortcuts) App，所以一直都很想瞭解他們是如何創造這些東西，讓使用者可以為一個列表客製化圖示，而不是單純地選取一個已經完成的圖示。  當然，我已經先上網找了許多文章，但都沒有獲得任何相關資訊。所以，我決定自己動手做！  備註：我知道我離最佳方法還很遠，還有很多地方可以改善。所以如果你知道有更好的方法，請留言與我分享。  本篇文章將會依照下列流程進行： 起始專案介紹我的方法加入名為 CoreDataCreating 的一個 CoreData 管理器模型依靠 CoreData 模型實作 CreateListController實作 ]]></description>
        <link>https://www.appcoda.com.tw/apple-ios-shortcuts/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b417</guid>
        <category><![CDATA[ Core Data ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 01 Jan 2020 18:08:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/11/shortcuts-app-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 用 Swift 實作 Smalltalk MVC　大幅減少資料流的複雜度！ ]]></title>
        <description><![CDATA[ 在 Apple 開發圈，我們都很熟悉所謂的 MVC 設計模式：把整個程式裡的物件分成 Model、View 與 Controller 三種不同的角色，讓它們分別負責解決不同的問題。Model 物件專責資料的封裝與相關的基礎行為，View 物件代表使用者看得到的介面元件，而 Controller 物件負責把 Model 物件與 View 物件連結在一起（參考資料：Apple Developer Documentation Archive）。它們之間的互動關係也被定義得很清楚：以 Controller 為核心去操控 View 與 Model 物件，並接收它們的通知。View 與 Model 物件之間不能直接溝通，要通過 Controller 才可以。  雖然從關係圖看起來是個很簡潔的架構，但大家大都也知道 MVC 容易產生 Controller ]]></description>
        <link>https://www.appcoda.com.tw/smalltalk-mvc/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b416</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 25 Dec 2019 18:08:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/12/smalltalk-mvc-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 透過 Objective-C 快速了解 iOS 記憶體管理的概念 ]]></title>
        <description><![CDATA[ 本篇原文（標題：iOS Memory Management in Under 6 Minutes）刊登於作者 Medium，由 Hassan El Desouky 所著，並授權翻譯及轉載。  最近，我搜尋了很多關於 iOS 記憶體管理的資訊，這是 Swift 中對我來說有點困難的題目。因此，我決定要更深入了解 Objective-C，因為我已經學過它，所以可以更透徹地了解記憶體管理，像是在 ARC 之前是如何進行記憶體管理的呢？有了 ARC 之後的情況又是如何？ARC 與垃圾回收器 (Garbage Collector) 有甚麼差異？諸如此類的問題。  簡介 當你開始撰寫物件 (Object) 時，會發現一件有趣的事。  物件比整數 (integer)、浮點 (float) ]]></description>
        <link>https://www.appcoda.com.tw/-e8-a8-98-e6-86-b6-e9-ab-94-e7-ae-a1-e7-90-86/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b415</guid>
        <category><![CDATA[ Memory Management ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Thu, 19 Dec 2019 18:08:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/11/memory-management-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ ViewController 轉場進階指南：進一步創建絢麗的轉場動畫 ]]></title>
        <description><![CDATA[ 一直以來，開發者都費盡心思去了解視圖控制器 (ViewController) 之間的轉換，但線上能簡單說明視圖控制器動畫轉場的教程卻非常少。上一篇文章我教了大家用最簡單的方法，創建令人驚艷的轉場動畫。在這篇進階文章中，我會再帶大家客製另一款轉場動畫。 ]]></description>
        <link>https://www.appcoda.com.tw/viewcontroller-transition-advanced/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b414</guid>
        <category><![CDATA[ 動畫實作 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 11 Dec 2019 18:09:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/12/viewcontroller-advanced-feature-photo-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ ViewController 轉場初階指南：簡單打造酷炫的轉場動畫 ]]></title>
        <description><![CDATA[ 一直以來，很多開發者都費盡心思去了解視圖控制器 (ViewController) 之間的轉換，可是，線上能簡單說明視圖控制器動畫轉場的教程卻非常少。這篇文章由 Fran Obarrio 帶大家客製由一個視圖控制器轉場到另一個的動畫，讓大家用最簡單的方法，創建令人驚艷的轉場動畫。 ]]></description>
        <link>https://www.appcoda.com.tw/viewcontroller-transition-easy/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b413</guid>
        <category><![CDATA[ 動畫實作 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 04 Dec 2019 18:28:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/11/viewcontroller-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 詳解 Swift 各種 Type Polymorphism　找出最適合的實作方式！ ]]></title>
        <description><![CDATA[ Swift 不同 Type Polymorphism (多型) 的實現方式各有差異，這些差異在語法中經常被刻意隱瞞。這雖然使程式碼更簡潔易讀，但也造成開發者容易碰到一些不明就裡的設計問題。此文將簡介各個 type polymorphism 的原理與異同之處，為你找出最適合的實作方式。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-polymorphism/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b412</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 27 Nov 2019 18:18:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/11/Polymorphism-feature-scaled.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 CocoaPods 及 GitHub　 一步步創建可重用的函式庫！ ]]></title>
        <description><![CDATA[ 歡迎回到我們的教學系列文章！在上一篇教學文章中，你學到了如何使用 Network 框架來偵測及監控網路狀態。看來這個框架在 NetStatus 類別中運行得相當不錯，所以讓我們更進一步，來創建一個基於 NetStatus 類別的小型、開源框架吧！在本篇教學中，我們將透過 CocoaPods 來創建一個 pod，讓這個框架容易發佈及整合，並把它推送到 GitHub 上。  要在多個專案中重複使用 NetStatus 是非常簡單的。而且，將來你希望創建的任何自定義框架，都可以依照接下來所教的方式來實現。  備註： 如果你還沒有看過之前的教學文章，我強烈建議你可以先去閱讀一下。如果你只是想要學習如何創建一個 pod， 請先下載此專案。  創建框架 好，讓我們先來創建一個可以發佈的函式庫。  首先，在 Xcode 打開 File &gt; New &gt; Project… 來創建一個新專案。在第一個步驟裡，選擇 Cocoa ]]></description>
        <link>https://www.appcoda.com.tw/cocoapods-github--e5-87-bd-e5-bc-8f-e5-ba-ab/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b411</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Wed, 20 Nov 2019 17:55:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/11/creating-pod-cocoapods-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Compositional Layout 詳解　讓你簡單操作 CollectionView！ ]]></title>
        <description><![CDATA[ 隨著手機 App 介面和硬體不斷進化，App 介面的已經越來越複雜。此文會簡單地介紹 Compositional Layout ，讓操作 CollectionView 變得更加容易，一步一步帶你建構屬於自己的 CollectionView。 ]]></description>
        <link>https://www.appcoda.com.tw/compositional-layout/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b410</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Huang ShihTing ]]></dc:creator>
        <pubDate>Wed, 13 Nov 2019 18:18:57 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/11/Compositional-Layout-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 小技巧：利用 Stack 簡單構建彈性的卡片視圖 ]]></title>
        <description><![CDATA[ SwiftUI 框架讓我們輕易構建 App UI。在這篇文章中，你將實作一個常見的手機 UI 設計 —— Card UI。透過使用堆疊 (HStack 和 VStack)、圖像、和文本視圖，來創建一個能夠接受不同圖片與文字的彈性卡片視圖 (card view)。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-stack-card-view/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b40f</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 06 Nov 2019 23:00:34 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/11/swiftui-scrollview-2.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI &amp; PromiseKit：讓 Alert 樣式統一又可復用 　打破彈出視窗的惡夢 ]]></title>
        <description><![CDATA[ 開發 iOS 的過程中，常常會有彈出 Alert 讓使用者選擇的需求，又需要知道使用者選擇了哪一個，卻遇到各種彈出都要一直callback callback 嗎？每次選項都很難掌握，多個選項還要自行客製化，也很難復用，只能一個畫面刻一個？  在本篇教學文章中，我們會了解到幾個要點並實作：  建立統一入口 Alert 服務化，讓任何地方需要顯示與選擇時，都能輕易掌握使用呼叫。客製化領域設計選項 (enum)，不管是哪種商業邏輯都能很簡單地讓使用者做選擇，並且輕易掌握使用者選擇後的事件回應。Alert 服務自動讀取 enum 選項，並建置 UI Button 列表。脫離傳統 UIAlertController callback 地獄，結合 PromiseKit 與 SwiftEntryKit 解偶系統服務與商業邏輯領域設計。 本篇文章將使用以下的工具、環境與第三方庫：  Xcode 11macOS 10.15SwiftUIPromiseKitSwiftEntryKit範例 建議大家參考範例程式碼消化服用呦！  前置工作 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-promisekit/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b40e</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 30 Oct 2019 18:03:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/10/alert-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 Network Framework　輕易監控網路狀態變化 ]]></title>
        <description><![CDATA[ 所有與伺服器交換資料的 App，都需要獲取所需的網路資訊，並觀察其變化。隨著 Apple 在 iOS 12 提供的 Network Framework ，要取得這些資料並加以處理就變得十分簡單。此文將會教你利用它來監控網路變動，並建立一個小型客製化框架，來把它製作成一個可重複使用的元件。 ]]></description>
        <link>https://www.appcoda.com.tw/network-framework/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b40d</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Wed, 23 Oct 2019 18:02:13 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/10/network-framework.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 善用狀態機架構　大幅簡化 View Controller ！ ]]></title>
        <description><![CDATA[ 本篇原文（標題： View Controller 與狀態機）刊登於作者個人網頁，由 Li-Heng Hsu 所著並授權轉載。  我們常常會碰到一個 View Controller 要處理不同狀態的情況，比如說，它本身就提供了編輯與非編輯狀態。如果資料是從網路 API 抓回來的話，那可能要處理載入與錯誤狀態；如果資料缺乏內容的話，也許還要加上空白狀態。這些狀態每一個在處理的事情可能很簡單，但如果全部都丟給同一個 UIViewController 物件去處理的話，那它一定馬上就成為所謂的 Massive View Controller。除了充滿各式各樣的控制流語句之外，它還得一次控管各式各樣的資料與物件，使得出現 bug 的機率大增。  於是，人們為了解決過於肥大的 View Controller，發明出一個又一個的架構，試圖給各個控制器物件更清楚的職責。然而，常見的幾個架構都是依據職責的性質來分類的。比如說，某個物件負責網路呼叫，某個物件負責導航邏輯，某個物件負責資料與 UI 的繫結等等。雖然這樣子的分工是很有效， ]]></description>
        <link>https://www.appcoda.com.tw/view-controller-state-machine/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b40c</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 16 Oct 2019 18:06:26 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/10/view-controller-feature-photo-1.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI 控件　讓你更彈性地設計專屬你的按鈕！ ]]></title>
        <description><![CDATA[ 按鈕是一個非常基本的 UI 控制元件，你在所有 App 中都可以看到它的蹤影。按鈕可以處理使用者的觸控動作，以觸發一些動作。此文詳細介紹 SwiftUI 控件，彈性又輕鬆地設計專屬你的按鈕，讓你感愛 SwiftUI 的威力之處。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-button/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b40b</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 09 Oct 2019 18:09:39 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/10/swiftui-button-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 從零打造基本版 Combine 認識 Functional Reactive Programming ]]></title>
        <description><![CDATA[ 隨著 Apple 在 WWDC 2019 推出了官方的 Functional Reactive Programming 框架 Combine，FRP 可以說是大勢所趨。此文將帶大家打造一個基本版的類 Combine 框架，讓你一步一步了解 FRP 的基本概念。 ]]></description>
        <link>https://www.appcoda.com.tw/functional-reactive-programming/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b40a</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 02 Oct 2019 18:11:18 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/09/Functional-Reactive-Programming.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 小技巧：在 iOS 13 實作 Context Menu　加強與設備的互動！ ]]></title>
        <description><![CDATA[ 較早之前，Apple 正式發佈了 iOS 13。當中除了深色模式 (Dark mode) 和其他新功能外，最新版本的 iOS 還展示了一種與設備互動的新方法，就是 Context Menu 。  Context Menu 功能與 3D Touch 中的 Peek &amp; Pop 類似。兩者其中一個最大的分別，就是此功能可在所有運行 iOS 13 及以上版本的設備上使用，即使該設備不支持 3D Touch 亦可。如果設備支援 3D Touch，大家就可以使用 Touch and Hold 手勢或 Force Touch，來顯示 Context Menu。  如果設備已升級到 iOS 13， ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-context-menu/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b409</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 25 Sep 2019 18:09:21 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/09/context-menu-ios13.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 ARKit 偵測與追蹤臉部動作　建立絢麗的使用者體驗 ]]></title>
        <description><![CDATA[ 去年 Apple 推出的新功能中，其中一個最創新的功能就是原深感測鏡頭 (True Depth Camera)。原深感測鏡頭對軟硬體工程師來說，支援了 FaceID 這個安全的面部識別系統；而對於開發者，原深感測鏡頭就開創了許多可能性，尤其是在基於臉部互動 (face-base interactions) 這方面。  在開始這篇 ARKit 教學之前，讓我快速說明一下相機的不同部分。原深感測鏡頭和大部分的 iPhone/ iPad 的前置相機一樣，有內嵌麥克風、具七百萬像素的相機、環境光源偵測器 (ambient light sensor)、距離感應器 (proximity sensor)、與揚聲器。而原深感測鏡頭最獨特的地方，就是獨有的測繪點投射器 (dot projector)、泛光照射器 (flood illuminator)、與紅外線鏡頭 (infrared camera)。  測繪點投射器會投射超過 3 萬個隱形測繪點到使用者的臉上，以建構成一個面部測繪圖（文章後部會提到） ]]></description>
        <link>https://www.appcoda.com.tw/arkit-face-tracking/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b408</guid>
        <category><![CDATA[ ARKit ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Wed, 18 Sep 2019 18:18:40 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/09/facial-recognition-1.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 Swift 5.1 新功能實作 Fluent Interface　讓程式碼更易讀流暢！ ]]></title>
        <description><![CDATA[ 最近，SwiftUI 正如火如荼地在全世界進行公開測試。如果你也有經意或不經意地接觸到 SwiftUI，那你可能會發現，它在設定 View 性質的語法上，跟我們以前學過的很不一樣。  一般在設定物件的時候，我們通常是這樣寫的：  let imageView = UIImageView(image: myImage) imageView.frame = CGRect(x: 0, y: 0, width: 100, height: 100) imageView.backgroundColor = .white imageView.alpha = 0.5 但是在 SwiftUI 裡，我們卻得這樣寫：  Image(uiImage: myImage)     .frame(width: 100, height: 100)     .background(Color.white) ]]></description>
        <link>https://www.appcoda.com.tw/fluent-interface/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b407</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 11 Sep 2019 18:08:25 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/09/Fluent-Interface-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 小技巧：利用 border 修飾符　輕鬆為按鈕或文本繪製邊框 ]]></title>
        <description><![CDATA[ 有了 SwiftUI ，我們就可以使用 border 修飾符，輕鬆在按鈕 (button) 或文本 (text) 外圍繪製邊框，而且這方法更適用於所有視圖！比如說，你想要創建一個這樣的按鈕：  編註：本教程使用 Xcode 11 beta 6 作測試。 我們可以在按鈕物件上應用 border 修飾符，來創建有顏色邊框的按鈕：  Button(action: {     print("Hello button tapped!") }) {     Text("Hello World")         .fontWeight(.bold)         .font(.title)         .foregroundColor(.purple)         .padding()         .border(Color.purple, width: 5) } 但是，如果你的設計師想你創建一個像這樣的圓角邊框按鈕，你可以怎樣做呢？  在 Xcode ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-border/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b406</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 04 Sep 2019 18:50:53 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/08/swiftui-macbook-xcode.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 結構化 RESTful API 模組與功能　大大提升程式碼的易讀性！ ]]></title>
        <description><![CDATA[ 日常工作中，常常需要與後端串接 RESTful API，然而 API 網址常常很難管理與統一路口，今天這篇文章，想與大家分享在公司的經驗，一起規範出一整套 RESTful API 串接的體系與模組。今天這篇文章需要大家搭配源碼閱讀。讓我們開始吧！  要點內容 統一 API 底層入口，利用泛型來解決所有 JSON Data to Model 轉換規範 API Function 結構，不再讓 URL 散落一地統一的錯誤獲取，讓 debug 不再頭大結合 PromiseKit 與 Alamofire，製作屬於你的非同步 API 網路應用 準備工作 這邊我們需要快速建立一個 UI 程式碼。為了聚焦重點，就不詳細說明 UI 的組裝過程了。  首先，我們需要先建立一個新專案， ]]></description>
        <link>https://www.appcoda.com.tw/restful-api-structure/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b405</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 28 Aug 2019 18:13:48 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/08/restful-api-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 使用 IBDesignable 與 IBInspectable　製作更美觀的 UI 元件 ]]></title>
        <description><![CDATA[ 使用介面建構器設計 App UI 是非常直覺的，你不需要撰寫任何程式碼都可以客製化 UI 元件。但它還是有所限制，不是所有 UI 元件的屬性都可以做設定。此文將介紹 IBInspectable 與 IBDesignable 兩個屬性，讓你了解如何利用它們自訂 UI 元件，打破這種限制。 ]]></description>
        <link>https://www.appcoda.com.tw/ibdesignable-ui/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b404</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Mon, 19 Aug 2019 19:25:51 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/08/ibdesignable-0.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 讓 iPad App 支援 Apple Pencil 2　大大增強使用者體驗！ ]]></title>
        <description><![CDATA[ 在 2018 年 10 月，Apple 推出了全新的 iPad Pro 和 Apple Pencil 2.0。不同於上一代的 Apple Pencil，這次官方還為開發者提供了一些有趣的 API 應用方式，以增強 App 的功能與使用者體驗 (User Experience)。在本篇教學中，我將讓你了解如何讓你的 App 支援 Apple Pencil。  注意：在本教學中，為了測試範例 App，你需要一台 iPad Pro 實機，並與第二代 Apple Pencil 相容，因為模擬器無法提供本篇教學的功能。我們會使用 Swift 5 和 Xcode 10. ]]></description>
        <link>https://www.appcoda.com.tw/apple-pencil-ipad/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b403</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Wed, 14 Aug 2019 18:03:08 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/08/apple-pencil-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 UIViewPropertyAnimator 製作進階動畫　為 App 增強使用者體驗！ ]]></title>
        <description><![CDATA[ 動畫可以幫助開發者吸引使用者，替 App 添加一些樂趣。此文將教大家利用 UIViewPropertyAnimator 為視圖製作動畫，有了這個類別，開發者可以構建自定義計時、交互方式和中斷動畫，更可以在動畫運行時作出變動。 ]]></description>
        <link>https://www.appcoda.com.tw/interactive-animation-uiviewpropertyanimator/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b402</guid>
        <category><![CDATA[ 動畫實作 ]]></category>
        <dc:creator><![CDATA[ Eugene Trapeznikov ]]></dc:creator>
        <pubDate>Wed, 07 Aug 2019 18:12:12 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/08/interactive-animation-uiviewpropertyanimator.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ RESTful API 教學：用 Swift 建立屬於自己的輕量 REST 程式庫！ ]]></title>
        <description><![CDATA[ 現今大部分的 App 都會與伺服器溝通來交換資料，為了達到這個目的，它們多採用 RESTful API，又稱為 RESTful 網路服務 (Web Serivce)。App 可以使用 REST 傳送請求 (Request) 到伺服器，然後伺服器會回傳回應 (Response) 給使用者端 App。整個通訊是基於 REST 架構所定義的標準規則。開發者能夠藉由整合第三方程式庫到專案、或是實作自己的解決方案，來使用 RESTful API。  在這次的教學中，我將會教大家建立自己的輕量類別 (lightweight class) 來處理網路請求。我會帶著你從基礎開始，一步一步完成一個完整的解決方案，以提供一個乾淨而易於使用的 API 來準備、並提出網路請求。  要讀懂這篇文章，你需要有一些關於網路服務、REST、及其各種概念的基礎知識。如果對這個主題沒有自信，你可以先看一下維基百科或這篇文章來了解一下。在你繼續閱讀之前，請先確認你了解甚麼是 HTTP ]]></description>
        <link>https://www.appcoda.com.tw/restful-api-library-swift/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b401</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Wed, 31 Jul 2019 18:08:40 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/05/restful-api-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 製作物件池 (Object Pool) 重複利用物件　讓你大大提升開發效能！ ]]></title>
        <description><![CDATA[ 建造物件是一件耗時耗力的事。除了需要配置記憶體給它之外，可能還會牽涉到排版、渲染或載入外部資源等耗費大的動作。WKWebView 與 MKMapView 就是這樣的例子，都需要大量的時間去啟動。如果只有一次兩次的話還好，但如果它們經常出現的話，使用者就要常常等它們載入，很影響體驗。  解決的辦法很簡單：重複利用這些物件，省去生成這些物件所需的時間。  說起來簡單，但要怎麼實作呢？如果確定一次只會用一個物件的話，或許可以把該物件宣告成單例，像是這樣：  import UIKit import MapKit class MapViewController: UIViewController {     // 定義一個 MKMapView 的單例。     private static let singletonMapView = MKMapView()     override func viewDidLoad() {         super.viewDidLoad()         // 取得 mapView 單例。         let mapView = MapViewController.singletonMapView         // 清理 mapView。 ]]></description>
        <link>https://www.appcoda.com.tw/object-pool/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b400</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 24 Jul 2019 18:11:24 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/07/object-pool-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 Xcode 11 的預覽功能　輕鬆測試 App 在 Dark Mode 下的表現 ]]></title>
        <description><![CDATA[ 前一陣子，Apple 公開了 iOS 13 第一個測試版本。對一般使用者而言，這個新版本最大的亮點一定是深色模式 (Dark mode)。在設定內滑動開啟此功能後，iOS 就會讓一切變成深色系模式。在深色模式下，電話操作系統會自動為系統內所有的 Apps 和螢幕套用深色主題。一些 Apple 內建的 App 像是 Mail 和日曆，在這個模式下看起來非常好。但是，對於其他開發者開發的 App 而言，就會需要一些工作來讓 App 支援深色模式。  本篇教學的重點，並不是要教你如何在你的 App 內採用深色模式，Federico Zanetello 已經寫了一篇很棒的文章，教你如何在 iOS 13 設定深色模式。所以，本篇教學將會展示如何在 Xcode 11 中，使用預覽功能來測試深色模式及淺色模式。  為了教學， ]]></description>
        <link>https://www.appcoda.com.tw/dark-mode-preview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3ff</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 17 Jul 2019 18:08:46 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/07/dark-mode-swiftui-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ IGListKit 的演化：一起來看 Instagram 如何逐步解決 App 問題！ ]]></title>
        <description><![CDATA[ IGListKit + MVVM 是 Instagram 對於 iOS UICollectionView UI 與數據解耦的解決方案，IGListKit 的設計理念是以數據驅動，來解決不同 Team 之間的需求，包含不同的數據與不一樣的 Layout。  有關於 Code 說明與範例，我建議你搭配原始碼參考閱讀 IGListKitArchetype。  原始 UICollectionView 再用戶日益增長的 Instagram 有甚麼問題 Instagram 是一款照片與影片的社交平台，目前月活躍使用者已超過 10 億。隨著 Instagram 的成長，因為越來越多的業務性質，Instagram 也需要更多更複雜的 Cell Layout。  好的架構與解決方案通常都不是一開始就做好的，而是隨著產品的成長與用戶的大規模提升，架構逐漸演進而成的。  原生 UICollectionView 的理念 可高度客製化商業邏輯與 UI Code 解耦合Cell Reuse ]]></description>
        <link>https://www.appcoda.com.tw/instagram/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3fe</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 10 Jul 2019 18:03:29 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/07/instagram-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 SwiftUI 建立表單 UI　體驗更互動的開發過程！ ]]></title>
        <description><![CDATA[ 對一些開發者來說，SwiftUI 的宣告式語法可能還有點陌生；但一旦掌握好這種語法，你就會喜歡上用它來撰寫 UI 程式碼了。結合新的預覽功能，你可以撰寫程式碼，並即時預覽視覺上的變化，讓整體開發體驗變得更快、更有互動性。 ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-form-ui/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3fd</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 03 Jul 2019 18:06:04 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/06/swiftui-form-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift DSL 實作：利用 Swift UI 寫出簡單又明瞭的 Auto Layout DSL ]]></title>
        <description><![CDATA[ 今年可以說是 Swift DSL 元年，建造者函數 (Builder functions) 與 SwiftUI 讓開發者們看到在 Swift 內設計內嵌 DSL 的各種可能性。雖然這樣說，但 Swift 一直以來都提供了許多 DSL 實作的功能，只是還沒有出現在官方框架而已。舉例來說，我們可以利用自訂運算子 (Operators) 與下標 (Subscripts) 等功能，來寫出簡單又明瞭的 DSL。  DSL：領域專用語言 (Domain-specific Language)，指針對某個問題領域特化的語言。比如說 HTML 就是針對網頁結構的語言，JSON 是針對資料結構的語言等等。相較於通用目的語言 (GPL 或 General-purpose Language，如 Swift 本身)，DSL 的語法會更簡潔，邏輯更簡單。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-dsl/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3fc</guid>
        <category><![CDATA[ Auto Layout ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 26 Jun 2019 18:03:26 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/06/swift-dsl-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SwiftUI 初體驗： 建構一個簡單 App　讓你了解 SwiftUI 有多強大！ ]]></title>
        <description><![CDATA[ 在今年 WWDC 2019 大會之中，最令人振奮的主題演講莫過於開發者工具的改善，而其中最大而最棒的消息就是 SwiftUI 的發佈。SwiftUI 是一個全新的框架，讓你用更少程式碼、並以宣告的方式，來設計及開發使用者介面。  SwiftUI 與 UIKit 不同，UIKit 通常要配合 storyboards 一起使用，而 SwiftUI 則完全建構在程式碼之上。不過，SwiftUI 的語法相當容易理解，而且可以透過 Automatic Preview 來快速預覽我們設計的介面。  因為 SwiftUI 是使用 Swift 所建構而成，讓你可以使用更少的程式碼來完成複雜的 App。更重要的是，使用 SwiftUI 能夠讓你的 App 自動支援一些進階的功能，像是動態型別 (Dynamic Type)、黑暗模式 (Dark Mode) ]]></description>
        <link>https://www.appcoda.com.tw/swiftui-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3fb</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Mon, 17 Jun 2019 19:42:38 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/06/swiftui-demo-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ GoodNotes 專訪：只靠賣 APP 的收入，也能養活一隊 15 人的團隊！ ]]></title>
        <description><![CDATA[ GoodNotes 是一個筆記 APP，在 App Store 只售港幣 60 大元。它最傳奇的地方，是在沒有投資資金、只靠賣 APP 的收入下，竟也能養活一隊 15 人的團隊！我們訪問 GoodNotes 的創辦人 Steven，訴說這個每個軟件工程師都夢寐以求的故事。 ]]></description>
        <link>https://www.appcoda.com.tw/goodnotes/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3fa</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Thu, 13 Jun 2019 03:03:54 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/06/goodnotes-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 給 Swift 工程師的後端指南：用 Kitura 來架設自己的 API 後台 ]]></title>
        <description><![CDATA[ 身為一個 Swift 開發者，每天撰寫著 iOS/macOS/tvOS/watchOS 的程式，你的經驗讓你的效率高到破表，一天就可以輕易做出一個線上聊天室介面，兩天就可以做出塗鴉牆介面，你覺得自己的開發速度天下無敵；但不知道為甚麼，突然你覺得有點惆悵：啊，只有介面的程式，就像沒有加珍珠的奶茶，我怎麼樣都喝不下去啊！沒錯，再強的前端，都有可能需要一個後端來配合，才有辦法做出更多樣的應用，以往我們需要團隊作戰，但現在你可以全部都自己來，當個真正的一條龍工程師（不要哭，我知道領 22k 的我們都已經是了）！今天我們就要來介紹，如何用 Swift 來撰寫後端，並且讓後端程式上線服務。  雖然 Swift 是開發 iOS/macOS 的主要語言，但 Swift 能做的事情，遠遠超過開發 Mobile/Desktop UI。Swift 現在的發展， ]]></description>
        <link>https://www.appcoda.com.tw/kitura/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3f9</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Huang ShihTing ]]></dc:creator>
        <pubDate>Wed, 05 Jun 2019 18:04:15 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/05/Kitura-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 Google Translation API 添加即時翻譯功能　讓你的 App 更加升級！ ]]></title>
        <description><![CDATA[ Google Translation API 能提供基於機器學習 (Machine Learning) 的翻譯功能，將任何字串轉換成任何支援的語言形式。 此文將會深入解釋如何使用翻譯 API，讓我們可以在 app 中提供即時翻譯功能。 ]]></description>
        <link>https://www.appcoda.com.tw/google-translation-api/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3f8</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Wed, 29 May 2019 18:07:54 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/05/blake-connally-373084-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 客製化 NotificationCenter　讓你使用起來更簡單 ]]></title>
        <description><![CDATA[ 觀察者模式是一個常見、而且歷史悠久的程式設計模式，而在 Swift 裡，它主要是以通知與通知中心 (NotificationCenter) 的形式存在的。簡單來說，物件可以去向通知中心註冊，成為某一種通知事件的觀察者，然後當有人向通知中心送出通知的時候，通知中心就會去找它的註冊表裡面，所有有註冊這個通知類型的觀察者，並將通知傳送給它們。  通知中心模式跟 Target-action 模式與 Delegate 模式一樣，都是 iOS 開發裡不可或缺的一部分。像是要應對軟體鍵盤彈出的話，就得要去註冊相關的通知才行。然而，它有一個很麻煩的地方是：它的 API 有點囉唆。  原本的通知中心 `NotificationCenter` 是一個非常有 Objective-C 風格的 API。在早期版本的 Swift 中，它多數方法的參數都是 `String` 或者 `Any`，直到後來才有了 `Notification.Name` 等的新型別去包裝這些字串。但即使如此，它用起來還是感覺有些礙手礙腳。  // 註冊為觀察者 ]]></description>
        <link>https://www.appcoda.com.tw/notificationcenter/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3f7</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 22 May 2019 18:15:22 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/05/NotificationCenter-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 初探 Flutter ：使用單一程式碼輕鬆建立 iOS 及 Android App！ ]]></title>
        <description><![CDATA[ Flutter 讓開發者可以利用單一程式碼建立 Android 和 iOS apps。Flutter 開發建基於流行的行動 App 知識上，我們可以用幾行程式碼就輕鬆完成 UI 元件！一起試試建立一個非常簡單的通訊簿 App，讓我們看看 Flutter 的能力吧！ ]]></description>
        <link>https://www.appcoda.com.tw/flutter-basics/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3f5</guid>
        <category><![CDATA[ Flutter ]]></category>
        <dc:creator><![CDATA[ Lawrence Tan ]]></dc:creator>
        <pubDate>Wed, 15 May 2019 18:10:02 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/05/flutter-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 以編程方式使用 Auto Layout　讓你直覺又簡單地設計 App UI！ ]]></title>
        <description><![CDATA[ Auto Layout ㄧ直是 iOS 必學的技術之一，好處是非常直覺，而且多人使用的時候非常好懂，就算不大會 Swift / OC 都可以很容易做出想要的版面。我將試範實作一個 App Store 的 UI，當然是以編程方式實作 Auto Layout 。 ]]></description>
        <link>https://www.appcoda.com.tw/code-auto-layout/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3f4</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 08 May 2019 18:05:34 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/05/code-auto-layout-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 簡單而強大的 Drag and Drop API　讓你輕鬆建立屬於自己的 Trello App ]]></title>
        <description><![CDATA[ 本篇原文（標題：Building a Trello-like iOS App with Drag &#038; Drop API）刊登於作者 Medium，由 Alfian Losari 所著，並授權翻譯及轉載。 當建構一個讓使用者在螢幕上移動數據的 App 時，拖放 (Drag and Drop) 就是一種很自然的使用者交互 (User Interaction)。這樣的互動方式在 Trello、Jira 等相關 App 中廣泛使用，以在版面之間移動數據。  在 iOS 11 發佈之前，以拖放互動方式來建立一個 iOS app 並不是簡單。以我過往的經驗來說，我們會要手動實作許多乏味的步驟，像是：  在想要拖動的視圖中加入長壓手勢辨識器 (recognizer)。 當使用者開始拖動時， ]]></description>
        <link>https://www.appcoda.com.tw/drag-and-drop-api/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3f3</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 01 May 2019 18:31:45 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/04/drag-and-drop-api-feature.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 擷取佈局回饋循環 (Layout Feedback Loop)　解決記憶體耗盡問題 ]]></title>
        <description><![CDATA[ 試想像這樣的一個情境：你的 App 非常成功，不但有許多使用者、並有 100% 未當機率 (Crash-free rate)。你非常開心，生活也棒極了。但在某個時間點，你開始在 App Store 上看到負評，說你的 App 經常閃退；但查閱 Fabric 卻沒有新的閃退訊息出現。哪是甚麼情況呢？  答案是記憶體用盡 (OOM, Out of Memory) 而終止。  當你用完使用者裝置上的 RAM 時，作業系統可以決定為了其他處理流程，而回收記憶體並關閉你的 App。我們稱其為「記憶體用盡而終止」，有幾個原因會導致這樣的情況發生：  循環引用 (Retain Cycles) 競爭危害 (Race Conditions) 廢棄執行緒 (Abandoned Threads) 死鎖 (Deadlocks) ]]></description>
        <link>https://www.appcoda.com.tw/layout-feedback-loop/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3f2</guid>
        <category><![CDATA[ Auto Layout ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 24 Apr 2019 18:06:47 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/04/layout-feedback-loop.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 使用 Swift 實作基於堆積的優先權佇列　大幅改善演算法的時間複雜度 ]]></title>
        <description><![CDATA[ 本篇原文（標題：Implementing a Heap Based Priority Queue Using Swift）刊登於作者 Medium，由 Jimmy M Andersson 所著，並授權翻譯及轉載。 電腦科學中存在著許多問題，而其中，使用優先權佇列 (Priority Queue) 作為底層資料結構，就可以大幅改善演算法 (algorithm) 的時間複雜度。其中一個例子就是 Dijkstra 的最短路徑演算法，該演算法就使用優先權佇列在圖形中搜尋兩個頂點之間的最短路徑。  但不幸的是，Swift 標準函式庫並沒有包含優先權佇列的實作，因此我們將深入了解如何自己實現基於堆積 (heap) 的優先權佇列吧！  為了讓你可以跟著教學操作，你可以從 Github 下載原始程式碼！  甚麼是優先權佇列 (Priority Queue) ? 優先權佇列是一種資料結構，讓物件可以有效率地透過相對優先權來排序，你可以把一堆物件丟到佇列之中，然後佇列會依照物件的重要性一個個排好。  假設你為電腦創建了一堆任務，準備在將來某個特定的時間點執行。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-algorithm/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3f1</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 17 Apr 2019 18:19:25 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/04/Heap-Based-Priority-Queue.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 Container View Controller 拆開職責　視圖控制器不再複雜又臃腫！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：Avoiding Massive View Controller using Containment &#038; Child View Controller）刊登於作者 Medium，由 Alfian Losari 所著，並授權翻譯及轉載。   視圖控制器 (View Controller) 這個元件提供基本構建塊，作為我們在 iOS 開發中構建 App 的基礎。在 Apple MVC 世界中，它是視圖 (View) 和模型 (Model) 之間的橋樑，充當兩者之間的協調者。控制器是一個觀察者，針對模型的更改作回應，然後更新視圖；並從使用 Target Action 的視圖接受用戶操作，然後更新模型。  （圖片來源：Apple Inc.）  身為 ]]></description>
        <link>https://www.appcoda.com.tw/container-view-controller/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3f0</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 10 Apr 2019 18:05:40 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/04/Containment-Child-View-Controller.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 好好利用 Swift Protocols　簡單增進程式碼的可測試性 ]]></title>
        <description><![CDATA[ 測試程式碼可以確保它運作起來符合需求，而且在添加新功能時也不會發生問題。然而，很多開發者都因為程式碼在層級、類別、及外部框架的依賴性之間過於耦合，而不願意花時間來測試程式碼。此文會利用 Swift Protocols 向大家證明，建立框架的抽象層或解耦類別並不困難。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-protocols/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3ef</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 03 Apr 2019 18:02:02 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/12/swift-protocols_feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS App 介面設計教學：如何制作表格和集合視圖的組合介面 ]]></title>
        <description><![CDATA[ 本篇為在校大學生黃潤華先生的客座投稿，他主要使用 Swift 進行開發，有時使用 C 或者 C++ 挑戰一些算法題目。   在 iPhone 和 iPad 的很多 app 裏面，我們都會看到許多用表格視圖和集合視圖制作起來的介面，大部分應該是表格視圖和集合視圖的組合介面。比如我們在 app store 裏面的遊戲欄或者 App 欄裏面會看到由表格視圖和集合視圖組合而成的漂亮介面。    又或者，你也會在快捷指令中心、Medium 和 Apple Support 裏面看到相類似的介面。    仔細分析不難發現這些介面的共同點，一般都是在表格視圖裏面添加集合視圖，但是呢，我們一般學習的表格視圖是用來展示一連串具有相同形式的介面的，就比如郵件裏面你收到的郵件的展示形式，或者微信裏面的聊天列表。    於是，我們再看一開始的那些照片，他們好像找不到甚麽相同的點，最多就是最上面的集合視圖可以找到共同點，但是集合視圖下一欄就立刻變成了表格視圖，甚至，表格視圖也有很多種形式，完全對應不起來呀，哪有甚麽共同特點？真是讓人匪夷所思。為甚麽可以實現這種介面呢？別擔心，接下來就來學學如何制作表格視圖和集合視圖並存的介面吧。 ]]></description>
        <link>https://www.appcoda.com.tw/ios-app-interface/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3ee</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 27 Mar 2019 18:12:38 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/03/app-interface-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Massive View Controller 重構： Swift Extension 整理術 ]]></title>
        <description><![CDATA[ Swift Extension 是用來延伸既有型別的東西。透過 Extension，當我們想為某個型別加功能的時候，就可以不用把新的功能寫在該型別的主體裡面。此文教大家善加運用 Extension，從而大幅簡化 Massive View Controller。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-extension/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3ed</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 20 Mar 2019 18:06:54 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/03/swift-extension-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 深入解析 Promises　輕鬆控制 Parallel Programming (平行程式設計) ]]></title>
        <description><![CDATA[ 本篇原文（標題： Parallel programming with Swift: Promises ）刊登於作者 Medium，由 Jan Olbrich 所著，並授權翻譯及轉載。 並行 (concurrency) 的概念與我們日常開發工作越來越息息相關。在上兩篇文章中（Swift 平行程式設計：基礎 (Basic)、操作 (Operations)），我們已經探討過 Apple 所提供的工具。這次，我們將重點放在非官方所支援的工具上。  讓我們回顧一下：    並行 (concurrency) 是指在同一時間執行工作的能力。   想像一下，現在有一個花費時間較長的任務，它需要執行一段時間，而任務結束後我們可以得到一個結果；比如說下載檔案這樣，而圖檔就是我們的結果。在下載的同時，我們要將圖檔設置到 UIImageView 之中，那要如何實作呢？  最簡單的方法就是透過 NSURLSession 來下載檔案，並且給予一個閉包 (closure)。  URLSession. ]]></description>
        <link>https://www.appcoda.com.tw/promises/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3ec</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 13 Mar 2019 18:08:24 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/02/promises-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 Protocol Extension 減少重覆的 Code　大大增強 Code 的維護性 ]]></title>
        <description><![CDATA[ 對任何程式開發來說，減少重覆的 code，把權責明確分開，讓 code 維護性變好，是非常重要的課題。同樣功能的 code，如果分散在程式的各個角落，不但改功能時很有可能會漏改或改錯，而且要找到某個功能確切的擺放位置也會非常困難；這些都會讓開發成本變得非常高，也會讓開發所需要的時間變得難以估計。  如果我們能把每個小元件的功能定義清楚，就有機會把重覆的部份拉出來，另外找個統一的地方擺放，在需要這些功能的時候，再簡單地連結過去，這樣開發跟維護起來，都會輕鬆很多。而在現今的軟體開發模式中，有許多方法可以做到這點，最為人所知的一個模式，就是利用繼承 (Inheritance)，把會重覆利用的部份放在母類別，讓其它子類別去繼承。另外一種做法，則是利用 Composition Pattern，將功能做成組件分出來，讓需要的模組去組合取用。不管那一種方法都能夠有效地減少 code 重覆性，讓權責更加清楚。  在 Swift 2.0 之後，針對 Composition 這個 pattern，我們有了更方便的工具：Protocol ]]></description>
        <link>https://www.appcoda.com.tw/protocol-extension/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3eb</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Huang ShihTing ]]></dc:creator>
        <pubDate>Wed, 06 Mar 2019 18:01:12 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/03/protocol-extension-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Massive View Controller 重構：Coordinator 模式與 Flow Controller ]]></title>
        <description><![CDATA[ 在上一篇文章中，我們用了依賴注入的技巧，來將 View Controller 與 Model Manager 之間的耦合解開。然而，View Controller 的依賴並不只是這樣而已，View Controller 與 View Controller 之間的依賴更為常見。  比如說，當要在 View Controller 之間傳遞資料的時候，Apple 會告訴我們要這樣寫：  class MasterViewController: UITableViewController {     var models: [Model] = []     // 使用 Storyboard Segue 的話...     override func prepare(for segue: UIStoryboardSegue,        sender: Any?) {         if segue.identifier == "ShowDetail" {             // 取得目的 VC。 ]]></description>
        <link>https://www.appcoda.com.tw/coordinator/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3ea</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 27 Feb 2019 18:02:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/02/coordinator-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Function Naming 指南：適當為函式命名 讓程式碼更簡潔清晰 ]]></title>
        <description><![CDATA[ 本篇原文（標題： Function Naming in Swift）刊登於作者 Medium，由 Pablo Villar 所著，並授權翻譯及轉載。 在本篇教程中，我們將探討一個在編寫函式時經常遇到的問題：我該如何命名這個函式呢？  雖然這個問題看起來很簡單，但作為軟體開發人員，適當地命名函式對我們職涯非常重要。下文我們將會看到，適當地命名函式可以讓 code base 更清晰、更易於使用。  簡潔 API 的重要性 如果你要使用第三方套件中的函式，比如說要創建 FancyLabel，你會選擇以下哪個方法來命名函式？  // A static func makeLabel(withTitle title: String) -> FancyLabel // B static func configure(_ text: String) -> FancyLabel 你覺得哪一個比較適合？ ]]></description>
        <link>https://www.appcoda.com.tw/function-naming/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3e9</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 22 Feb 2019 18:01:46 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/02/function-naming-feature.jpeg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Line Chatbot: 使用 ngrok 開發 LINE 應聲蟲聊天機器人 ]]></title>
        <description><![CDATA[ Line 在 2017 年開始推出聊天機器人 (Chatbot)，經過兩年半的發展，這個功能可謂遍地開花。在這篇文章中，佳新將會一步一步教大家以 ngrok 開發具有人工智慧的應聲蟲聊天機器人，讓你看看使用 ngrok 開發和測試有多方便。 ]]></description>
        <link>https://www.appcoda.com.tw/line-chatbot/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3e8</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 陳 佳新 ]]></dc:creator>
        <pubDate>Mon, 18 Feb 2019 15:30:34 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/02/line-chatbot-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 設計多執行緒 (Multi-Threaded) App　處理連續的資料流量更有效率！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：Designing Multi-Threaded Applications Using Swift）刊登於作者 Medium，由 Jimmy M Andersson 所著，並授權翻譯及轉載。   身為一名在汽車產業裡的 iOS 開發者，我花了不少時間處理即時資料。現今許多 App 都需要有效率地處理連續的資料流量，為了確保不會卡住使用者介面，你很可能需要使用多執行緒來開發。  處理即時的資料流量非常有趣，因為你會不斷收到可以用來更新視覺畫面的新資料。這也是開發時最困難、最令人沮喪的事情，因為 iOS 裝置有一些硬體上的限制。幸運的是，Apple 透過非常容易使用的 GCD (Grand Central Dispatch) 介面，提供多執行緒 (Multi-Thread) 功能。你可能會對下面的程式碼感到熟悉：  DispatchQueue.main.async {   // Place a work item ]]></description>
        <link>https://www.appcoda.com.tw/multi-threaded/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3e7</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 13 Feb 2019 18:15:06 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/11/multi-threaded-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Massive View Controller 重構：透過依賴注入 (Dependency Injection) 減輕職責 ]]></title>
        <description><![CDATA[ View Controller 可以說是 iOS 開發裡的核心物件。這不只是因為它佔據了 MVC (Model-View-Controller) 中的中心位置 Controller，還因為 UIKit 團隊有意推動場景導向的設計。UIKit 本身是以當時的 AppKit 為基礎，針對行動系統所重新設計出來的一個框架。在原本的 AppKit 裡面，MVC 基本上是以視窗為單位的，以 NSWindowController 為最主要的 Controller。但是在 UIKit 裡面，視窗的重要性被大大降低，取而代之的是一個個「場景」。場景的位階低於視窗，類似於 View，但也不是普通的 View，因為它在一般的 View 階層之上還多了類似於視窗的呈現方式、以及從場景到場景之間的轉場。然而在程式碼中，並沒有針對場景而在 UIWindow 與 UIView 之間另外創造一個 UIScene 的類型， ]]></description>
        <link>https://www.appcoda.com.tw/massive-view-controller/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3e6</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Fri, 08 Feb 2019 20:18:53 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/01/Massive-View-Controller-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 實作無限分頁滾動視圖 (Scroll View)　為使用者帶來更完美的體驗和設計 ]]></title>
        <description><![CDATA[ 在這次的範例之中，我們將會製作一個無限分頁滾動視圖 (Infinite Paging Scroll View)。 ]]></description>
        <link>https://www.appcoda.com.tw/scroll-view/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3e5</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 01 Feb 2019 19:30:40 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/11/infinite-paging-scroll-view-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 善用 Xcode Instruments 來最佳化程式碼　大大提高 App 效能！ ]]></title>
        <description><![CDATA[ 要偵測 App 的效能問題、並決定如何改善效能時， Xcode Instruments 的 Time Profiler 模版就是我們的最佳起點。此文會教你使用 Time Profiler 來分析範例專案程式碼的效能，從而找出程式碼中的瓶頸，並優化程式碼。 ]]></description>
        <link>https://www.appcoda.com.tw/xcode-instruments/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3e4</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Mon, 28 Jan 2019 17:45:30 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/12/xcode-instruments-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 你也可以自訂搖動還原 (Shake to Undo) 的功能？一起來拆解並實作吧！ ]]></title>
        <description><![CDATA[ 在 iOS 上編輯內容的時候，如果要還原或重做步驟的話，通常可以透過搖動來呼叫出一個還原的警告：    這個搖動還原 (Shake to Undo) 功能在 UITextView 或者 UITextField 等文字編輯的 view 上是內建的，但大多數其他的 view 都沒有預設實作。還好，UIKit 其實已經幫我們做好了從動作偵測到顯示警告的部分，我們只需要提供第一響應者 (First Responder)，並使用它的 undoManager 就可以了。  編者按：由於這篇文章是前兩篇的延伸教程，所以在看這篇文章之前，請先參考 UIAlertController 教程和 First Responder 教程。 使用系統提供的搖動還原 第一步，就是去啟用 UIApplication 單例的 applicationSupportsShakeToEdit 功能：  @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {     func ]]></description>
        <link>https://www.appcoda.com.tw/shake-to-undo/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3e3</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 23 Jan 2019 17:00:19 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/01/shake-to-edit-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用 Swift Generic 建置可重複使用的 UITableViewController！ ]]></title>
        <description><![CDATA[ 當我們想要在 UITableViewController 中顯示數據的類型越多，就有可能導致重複和維護困難。透過 Swift Generic 來創建簡單抽象，建置可重用的 Generic UITableViewController，就可以解決這個問題了。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-generic/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3e2</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 18 Jan 2019 19:00:10 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/01/swift-generic-feature-photo-2.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ First Responder 教程：如何使用函式快速取得第一響應者？ ]]></title>
        <description><![CDATA[ 在寫 iOS app 的時候，我們偶爾會碰到需要用到第一響應者 (First Responder) 的狀況。比如說，當我們想要把內容貼到它上面，或者要它執行復原、重做等動作的時候。然而，Apple 官方並沒有公開可以直接取得第一響應者的 API，只提供了 isFirstResponder 這樣一個屬性讓我們去檢查某個響應者是不是第一而已。那麼，如果我們不知道誰會是第一響應者的話 ── 比方說在 AppDelegate 裡的時候 ── 我們要怎麼取得它呢？  先來複習一下甚麼是響應者：響應者是 UIKit 裡面負責接收使用者事件的一種元件，其類型是 UIResponder。它的子類型除了負責顯示的 UIView 之外，也包含了 UIViewController、UIApplication 與 AppDelegate 等不負責顯示的類型。也就是說，以上這些類型全部都具備了對使用者事件作出反應的能力。甚麼樣的使用者事件呢？就 iOS 裝置來說，包括了觸控螢幕輸入、裝置晃動、鍵盤輸入、以及遙控輸入等。 ]]></description>
        <link>https://www.appcoda.com.tw/first-responder/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3e1</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Mon, 14 Jan 2019 20:00:31 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2019/01/first-responder-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 12 期待已久的功能：客製化通知分組 (Custom Notification Groups) ]]></title>
        <description><![CDATA[ 本篇原文（標題：iOS 12: Custom Notification Groups ）刊登於作者 Medium，由 Jesus Guerra 所著，並授權翻譯及轉載。 在最近一次的 WWDC 發佈會，Apple 發表了 iOS 12 的新功能，其中一個就是通知分組功能。  今天，讓我們做一個導覽說明，去了解如何擁有屬於自己的客製通知分組，這非常容易上手，尤其如果你有一個像是聊天 App 或社群軟體 App，但首先要確定：  本篇教學是由 Xcode 10 Beta 第六版完成，所以官方版本釋出後，功能上或許會有一些改變。  通知分組 為你的 App 的通知功能分組，可以有效地幫助使用者一眼就得到更多資訊，並即時管理多個通知。  在 iOS 12，對於分組式的通知功能有三種設定方式：  自動模式： ]]></description>
        <link>https://www.appcoda.com.tw/custom-notification-groups/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3e0</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 09 Jan 2019 19:00:24 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/11/custom-notification-group.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift Class vs Struct：設計 Model 時，該用 Struct 還是 Class 呢？ ]]></title>
        <description><![CDATA[ 用 Swift 寫 app 的時候，我們通常一開始就會碰到一個問題：我們的 app model 宣告成 Struct 還是 Class 都符合我們的要求，哪麼應該宣告成哪一種好呢？讓我們來看看 Struct 和 Class 的差異，並從不同例子中看看哪一種更適合你的 app 吧！ ]]></description>
        <link>https://www.appcoda.com.tw/swift-class/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3df</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Fri, 04 Jan 2019 18:00:46 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/12/swift-class-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 程式碼教學：好好設定物件　讓程式碼更簡潔清晰 ]]></title>
        <description><![CDATA[ 本篇原文（標題：如何讓 iOS 程式碼更美觀：物件的設定）刊登於作者 Medium，由 Li-Heng Hsu 所著並授權轉載。 我們都看過這樣的 code：  let textField = UITextField() textField.text = "abc" textField.backgroundColor = .red textField.delegate = self self.view.addSubview(textField) 簡單、明瞭，但當中卻有些問題，讓這段 code 不是那麼的好看。  甚麼問題呢？  textField 這個詞重複出現了五次。 整段程式碼沒有階層，只能靠 comment 與空行去跟其它的程式碼做區隔。 這整段程式碼做的其實是語意上相關聯的一組事件。如果我們用白話來解釋的話，就是：    我要在我的 view 底下加一個新的、經過設定的 ]]></description>
        <link>https://www.appcoda.com.tw/swift-code/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3de</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Mon, 31 Dec 2018 19:00:28 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/12/swift-code-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ ZEPETO 深入剖析　讓你了解 3D 角色與使用者的互動關係 ]]></title>
        <description><![CDATA[ 本篇原文（標題：剖析ZEPETO，3D角色與使用者的互動關係）刊登於作者 Medium，由 Ray Wang 所著並授權轉載。 在虛擬世界，無論是在網路、社群媒體，或是遊戲中，使用者往往需要一個虛擬的 3D 角色代替自己與內容、他者或是虛擬物件做互動，去感知和遊歷虛擬世界。  在遊戲研究裡，3D 角色更是代替了真實的自己，暢遊於遊戲文本當中，而這樣的一個角色，稱之為虛擬化身 (Avatar)。虛擬化身顧名思義即是虛擬世界中的化身，為玩家提供一個進入虛擬世界的入口，在虛擬世界裡，玩家可以透過虛擬化身來表現自己的個性，透過操控虛擬化身，玩家可以在虛擬世界裡執行自己的意識。  但使用者不只有在遊戲當中會對虛擬化身產生連結，最近爆紅的一款應用 APP ZEPETO，就巧妙地抓到了虛擬化身對使用者的心理影響，讓使用者愛不釋手，甚至迫不及待拉著身旁好友一起加入。    如何使用這款應用網路上已經有許多文章討論，本篇文章著重在為何使用者會對自己的虛擬化身那麼著迷、以及使用者與化身彼此之間存在著怎樣的關係。以下會引述在遊戲研究當中針對虛擬化身的文獻，做簡單的陳述。  你和虛擬化身究竟是甚麼關係？ 學者 Banks 與 Bowman (2016) ]]></description>
        <link>https://www.appcoda.com.tw/zepeto/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3dd</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 26 Dec 2018 18:24:02 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/12/ZEPETO-1.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ UIAlertController 教程：讓你輕鬆在 UIViewController 以外的地方呈現警告 ]]></title>
        <description><![CDATA[ UIAlertController 大概是大多數人在想呈現警告或選單時的首選。但是，你有沒有想過如果要在 View Controller 以外的地方呈現 UIAlertController，應該怎樣做呢？這篇文章將為你介紹三個從 UIViewController 以外的地方呈現警告的方法。 ]]></description>
        <link>https://www.appcoda.com.tw/uialertcontroller/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3dc</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Fri, 21 Dec 2018 18:00:34 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/12/UIAlertController-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 善用 Xcode Target 來管理專案　為你節省大量時間！ ]]></title>
        <description><![CDATA[ 因為專案設定的數量眾多，許多開發者經常看著 Xcode 中長長的 Build Settings 列表，心裡難免會萌生想死的念頭。此文將會展示如何利用 Xcode Target 控制建構 iOS App 過程中的複雜性，讓你把程式碼整齊地組織到一個專案之中。 ]]></description>
        <link>https://www.appcoda.com.tw/xcode-target/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3db</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Mon, 17 Dec 2018 18:00:17 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/11/xcode-target-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 用 Framework 重構 Swift 程式碼　大大提高編譯效率！ ]]></title>
        <description><![CDATA[ 在開發的時候，我們有時會需要在不同的 target 裡重複使用同一段程式碼。甚麼是 target 呢？在 Xcode 裡，target 包含了應用程式、擴充套件、測試套件、以及 framework 與 library 等幾種套件 (bundle)。一個 target 沒有辦法直接使用另一個 target 的程式碼，即使這兩個 target 都是屬於同一個應用程式。比如說，如果我現在有兩個 target，一個是叫做 MyNotes 的應用程式，另一個是 MyNotes 的分享擴充套件，叫做 Save to MyNotes，像這樣的話：    當我在 MyNotes 裡面新增了一個檔案，並在其中宣告一個叫做 Note 的 struct：    我是沒有辦法在 ]]></description>
        <link>https://www.appcoda.com.tw/framework/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3da</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Hsu Li-Heng ]]></dc:creator>
        <pubDate>Wed, 12 Dec 2018 18:10:55 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/12/framework-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ UI Transition 教學：一起來學習 Whatsapp 也在用的 UI 轉場技巧吧！ ]]></title>
        <description><![CDATA[ 觀察其他非常成功的 App 的實作技巧，對你開發自己的 App 十分有幫助。如果你想為自己的 App 創建 Whatsapp 也在用、流暢又一致的 UITabBar 和 UIToolBar 動畫，這篇教程就非常適合你了！快來一起實作 Whatsapp 的 UI Transition (轉場) 技巧吧！ ]]></description>
        <link>https://www.appcoda.com.tw/ui-transition/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3d9</guid>
        <category><![CDATA[ 動畫實作 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 07 Dec 2018 17:50:57 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/11/whatsapp-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Flutter 教學：移植 75,000 行原生程式碼的心路歷程 ]]></title>
        <description><![CDATA[ 本篇原文（標題： Porting a 75,000 line native iOS app to Flutter ）刊登於作者 Medium，由 Gary Hunter 所著，並授權翻譯及轉載。 關於將大型 App 移植到 Flutter 的文章並不多，深入實作後，結果令我非常驚訝。  在澳洲有一個名為 Easy Diet Diary 的原生 iOS App。這個 App：  下載量達 120 萬次； 使用 Objective C 和 Swift 共同編寫，後端是 Amazon AWS； 包含 75,000 ]]></description>
        <link>https://www.appcoda.com.tw/flutter-porting/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3d8</guid>
        <category><![CDATA[ Flutter ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Mon, 03 Dec 2018 21:30:43 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/10/priscilla-du-preez-156157-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 深入了解 Swift String 字串型別  讓你的程式跑得更快更好 ]]></title>
        <description><![CDATA[ 字串型別 String 是每一個程式語言都會有的基本型別，也是所有工程師在牙牙學語的階段中，第一個會接觸到的資料型別（應該沒有人印 hello world 不是印字串、而是在螢幕印點陣的吧？）。雖然 String 在程式語言中非常基本，在大多數的情況下使用也不算太難，但是 String 也可以說是基礎型別中最複雜的一種了，背後除了多語系的顯示、轉換之外，還有記憶體、儲存空間最佳化、serialize/deserialize 等魔鬼，都藏在 String 這個幾乎每天都會用到的普通型別裡。  現在讓我們再把鏡頭拉回到 Swift 的開發現場，在開發 Swift 過程中，處理字串其實並沒有太直觀，你可能需要在不同 Swift 版本中，不斷改變你的字串處理語法；也會需要寫一長串呼叫，只為了取得 String 中的某一個 Character。相較於 Swift，許多高階語言像是 Python 或 Ruby，字串處理反而非常簡單， ]]></description>
        <link>https://www.appcoda.com.tw/swift-string/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3d7</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Huang ShihTing ]]></dc:creator>
        <pubDate>Wed, 28 Nov 2018 19:01:55 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/11/swift-string-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 了解 Delegation Pattern 讓你更有效率地實作類別之間的溝通！ ]]></title>
        <description><![CDATA[ 協定委派模式 (Protocol Delegation Pattern) 是 Apple 框架中最重要的功能，讓你輕易在程式碼內實現類別之間的溝通。如果你還不了解甚麼是委派協定、可選和必要協定方法，快來讀讀這篇文章吧！讓我們告訴你甚麼是協定，並帶你深入了解過如何建立協定、以及如何與委派模式合作。 ]]></description>
        <link>https://www.appcoda.com.tw/delegation-pattern/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3d6</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 23 Nov 2018 18:03:51 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/10/1_45BzmBMwmwNJqBzyxdeCwA.jpeg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Parallel Programming (平行程式設計) 可能會帶來甚麼問題？ ]]></title>
        <description><![CDATA[ 本篇原文（標題： Parallel Programming with Swift: What could possibly go wrong?）刊登於作者 Medium，由 Jan Olbrich 所著，並授權翻譯及轉載。 簡介 在之前的幾篇文章中，我們已經探討了幾種不同控制並行 (concurrency) 的方法。作業系統也提供了一些的低階方式，舉例來說，Apple 提供了相關的框架、或是其他像是經常在 JavaScript 中被使用的 Promises 概念。儘管有些陷阱我在之前的文章中已經提過，但我意識到我說得不夠詳細，因此，為了讓你們更充分理解這些概念，本篇文章中的某些部份會重複涵蓋到之前的內容。  這篇文章會講述不瞭解並行概念的話，有可能引致甚麼問題。讓我們開始吧！  原子操作 (Atomic) 原子操作是類似於資料庫中交易 (transaction) 的概念，當你想要寫入一個數值並且表現為單次操作，程式以 32 位元所編譯，若使用 ]]></description>
        <link>https://www.appcoda.com.tw/parallel-programming/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3d5</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Mon, 19 Nov 2018 23:15:01 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/10/1_jngqH2lCJjuouNR8NDGTAQ.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Flutter 教學：從零開始 一步一步學會使用跨平台套件 Flutter ]]></title>
        <description><![CDATA[ 直到遇上需要建置於兩個平台上的專案，我就趁著可以自由選擇套件的機會，選擇了 Flutter。為什麼我選擇了 Flutter，而不是 React Native 呢？本篇文章旨在分享我學習使用 Flutter 的歷程，希望可以啟發其他科技公司選擇使用 Flutter。 ]]></description>
        <link>https://www.appcoda.com.tw/flutter-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3d4</guid>
        <category><![CDATA[ Flutter ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 14 Nov 2018 19:24:03 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/10/1_GNEh0fPYEFCXoNGL1iAKpA.jpeg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Best Practice：助你在 Swift 中更效地使用類別 ]]></title>
        <description><![CDATA[ 在本篇教學中，我將會介紹一些最佳實踐 (best practice)，助你在 Swift 中安全而有效率地使用類別（參考型別）和參考語意 (reference semantics)。雖然協定導向程式設計 (POP) 及數值語義現在十分流行，但是追隨新技術的同時，不代表你需要拋棄所有關於類別的設計方法。你也可以在類別中加入一些簡單的結構，像是複製建構器 (copy initializers)、預設建構器 (default initializers)、指定建構器 (designated initializers)、解構器 (deinitializers)、以及遵循 Equatable 協定 (protocols) 等。為了瞭解範例程式碼的真正含意，我將會在部分類別中採用這些結構，如此一來你就能夠在你的 iOS App 介面之中使用它們。  我將會逐步解釋整個過程：從建立不同的協定、到創建遵循這些協定的類別、以及在類別中實現繼承、並使用這些類別的實例（物件），以說明我的最佳實踐，並且示範一些你在設計類別時可能需要做的額外步驟。  盡量使用協定 定義及使用協定能夠使你在定義新的類別時，保持意圖清晰明確。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-class-best-practice/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3d3</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Fri, 09 Nov 2018 18:14:31 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/11/dmitry-mashkin-973344-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 輕鬆實作 Table View 動畫效果 為 App 大幅提升用戶體驗！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：Animating Table View Cells Display）刊登於作者部落格，由 Vadim Bulavin 所著，並授權翻譯及轉載。 本文將會教你如何為 Table View Cell 添加自定義顯示動畫，提升 App 的用戶體驗 (User Experience)。  問題敘述 動畫效果是提升用戶體驗的關鍵因素。我猜你在當前專案中至少使用一個 Table View，考慮到 Table View 在 iOS App 中被廣泛運用，開發引人注目的加載動畫，將可顯著提升 App 的用戶體驗。  那麼，讓我們看看幾行程式碼如何能為你的 App 帶來新價值吧！  開始實作 首先，下載初始專案，這樣就可以節省編寫樣板程式碼和初始設置的時間。運行後，你會看到帶有靜態 Cell ]]></description>
        <link>https://www.appcoda.com.tw/table-view-cell-animation/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3d2</guid>
        <category><![CDATA[ 動畫實作 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Mon, 05 Nov 2018 17:51:36 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/09/Animating-Table-View-Cells-Display.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ App Security：實作 App 的安全防護 小心保護使用者資料 ]]></title>
        <description><![CDATA[ App security 是軟體開發中非常重要的一環。App 的使用者都期望自己的資料是保密的，所以 App 裡的敏感資料不應該輕易被人拿走。這篇文章我們將會探討一些開發者在 App 安全性方面的常見錯誤，以及如何處理這些問題。如果你將敏感資料存放在 UserDefaults，就有可能會暴露 App 的資訊。 ]]></description>
        <link>https://www.appcoda.com.tw/app-security/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3d1</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 31 Oct 2018 18:02:36 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/09/1_OI4z4XWDvpLpSSx3OWZZlQ.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 記憶體管理：了解 Strong、Weak 和 Unowned Reference  輕鬆解決記憶體洩漏 ]]></title>
        <description><![CDATA[ 當我們在編寫程式時，你可能會發現有些變數的 Reference 是 strong、weak 或 unowned，是甚麼意思呢？Strong、weak 與 unowned 的使用，其實與 Swift 記憶體管理 Automatic Reference Counting 有關。 ]]></description>
        <link>https://www.appcoda.com.tw/memory-management-swift/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3d0</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Kelvin Tan ]]></dc:creator>
        <pubDate>Fri, 26 Oct 2018 18:01:23 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/10/memory-management-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 活用 UIStackView：讓 APP 畫面佈局更方便快捷 ]]></title>
        <description><![CDATA[ 本篇原文（標題：Swift — 說說 堆疊視圖（ UIStackView ））刊登於作者 Medium，由 Jeremy Xue 所著並授權轉載。 前言 這次來談一個較無關程式碼的題目，是一個叫做 StackView 的元件，它可以提供行或列佈局的視圖，我們可以透過它輕易的定義好在 StackView 中元件的佈局，不需對於所有元件進行 AutoLayout 的約束設置，StackView 會處理大部分的工作。    因為常常會有人對這個元件有疑惑，常在使用它後卻出現一堆約束有問題的紅線，又或是設置完後顯示結果畫面不如預期的想像，碰巧最近剛好設計APP 畫面時有使用到 StackView 來佈局，加上近期有人有發問，所以就使用它來作為我文章的主題。  StackView 概覽 透過 StackView，你可以利用 AutoLayout 的強大功能，創建的用戶畫面，可以動態適應設備方向、螢幕尺寸和可用空間中的任何變化。StackView 管理其 arrangeSubviews 屬性中所有視圖的佈局。這些視圖基於它們在 ]]></description>
        <link>https://www.appcoda.com.tw/uistackview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3cf</guid>
        <category><![CDATA[ UI ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Mon, 22 Oct 2018 20:25:31 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/10/StackView-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ UI 設計求職攻略：現職 UI 設計師經驗分享 解答新手的常見問題 ]]></title>
        <description><![CDATA[ 本篇原文（標題：新手上路：UI 設計師的求職問答集）刊登於作者 Medium，由 Simon Lin 所著並授權轉載。   前言 這幾年由於網路、科技的蓬勃發展，UI 設計師這個職位真的越來越熱門了，各種不同類型的產業（甚至傳產要轉型）都需要相關人才的投入；但偏偏目前學校傳授這門領域的科系並不多，在科技快速迭代與變化的今天，學校所學的知識與觀念常常和業界的需求有所落差，許多剛畢業或是想轉行的朋友對於真實的產業運作一知半解，也不清楚該如何開始。因此今天整理了幾個常被問到、關於 UI 設計師求職的問題，希望可以為想踏入 UI 設計領域的朋友解惑。以下內容大多為個人經驗與觀點，如有不同的想法也請分享賜教、彼此交流！  自我介紹 Hello 我是 Simon，目前是一名數位產品設計師，過去的背景是平面設計，出社會的期間也不務正業待過餐飲業、在國外 Working Holiday 等，從去年開始轉職為 UI 設計師，今年開始試著做自己的產品，同時更深入的學習 ]]></description>
        <link>https://www.appcoda.com.tw/ui-designer/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3ce</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 17 Oct 2018 17:16:58 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/10/UI-feature-photo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 一步一腳印的 iOS App 上架和更新流程 ]]></title>
        <description><![CDATA[ 什麼都是假的，只有 App 上架 Store 才是真的。千辛萬苦完成 App 後，下一步、也是最重要的一步，就是把 App 送審上架！為了讓新手都能一次就送審成功，我們已經更新了 iOS App 的詳細上架流程。你的 App 也完成了嗎？快來跟著我們一步步將 App 送審上架吧！ ]]></description>
        <link>https://www.appcoda.com.tw/ios-app-submission/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3cd</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 彼得潘 ]]></dc:creator>
        <pubDate>Mon, 15 Oct 2018 18:02:54 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/10/app-submission.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Appium 使用教程：為手機 App 的 UI 自動化測試大大加速 ]]></title>
        <description><![CDATA[ 當你在閱讀本教程時，可能同時有數百萬、甚至數十億用戶正在瀏覽智能手機上的 App，擁有大量 App 的智能手機已經成為我們生活中不可或缺的一部分。每天有如此多的用戶不斷在使用手機 App，我們必須確保用戶介面 (UI) 運行順暢，不讓用戶感到失望；而編寫良好的自動化測試就可以實現這一點。  特別感謝 Sauce Labs，它們推出的 Appium 可以幫助測試工程師運行自動化 UI 測試，且這些測試都集中在一個平台上。因此，在本教程中，我將向讀者介紹甚麼是 Appium，以及如何使用這工具自動化 iOS App 的 UI 測試 。  甚麼是 Appium？   首先，Appium 到底是什麼？它是一個開源測試自動化工具，本質上是一個 HTTP Web Server（主從式架構），能夠管理多個 WebDriver sessions，並公開 REST API。 ]]></description>
        <link>https://www.appcoda.com.tw/automated-ui-testing-appium/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3cc</guid>
        <category><![CDATA[ Automated Testing ]]></category>
        <dc:creator><![CDATA[ Lawrence Tan ]]></dc:creator>
        <pubDate>Fri, 12 Oct 2018 18:02:10 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/10/fabian-grohs-597395-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 程式語言基礎：認清 Swift 數值型別 (Value Type) 與參考型別 (Reference Type) 的差別 ]]></title>
        <description><![CDATA[ 在 Swift，數值型別 (Value Type) 與參考型別 (Reference Type) 到底有甚麼差異呢？它們又是如何被儲存到記憶體呢？如果你還不清楚，這篇教學就不容錯過了！我們將會以簡單易明的例子解答這些疑問，為你打好程式語言的基礎。 ]]></description>
        <link>https://www.appcoda.com.tw/value-type-and-reference-type/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3cb</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Mon, 08 Oct 2018 18:02:16 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/08/ilya-pavlov-87472-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ ARKit 2.0 教學：儲存並恢復世界地圖數據 建立更連貫的 AR 體驗 ]]></title>
        <description><![CDATA[ 歡迎來到第 8 回 ARKit 教學系列的文章！ 隨著 iOS 12 的發佈，現在 ARKit 能夠儲存世界地圖 (World Map) 的數據了。 以前，我們無法儲存 AR 世界地圖的數據，現在 iOS 12 讓開發者能夠建立儲存 AR 體驗的能力。 若你有興趣學習建立在擴增實境 (Augmented Reality, AR) 中儲存世界地圖數據的 App，這篇教程你就不容錯過了。  以下就是你即將開始建立的 App。    你可以從圖片了解，我所說的儲存世界地圖數據 (Data)，指的是你可以先儲存 AR 世界地圖，然後即使關閉了 app，仍可稍後回復地圖數據；這是 iOS 11 無法做到的。現在只要把世界地圖的數據儲存起來，你就能讓使用者回到之前 AR ]]></description>
        <link>https://www.appcoda.com.tw/arkit-persistence/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3ca</guid>
        <category><![CDATA[ ARKit ]]></category>
        <dc:creator><![CDATA[ Jayven N ]]></dc:creator>
        <pubDate>Wed, 03 Oct 2018 18:01:55 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/09/youssef-sarhan-470786-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 開發者求職指南：善用 2000 小時作準備 讓你在今年成功獲聘 ]]></title>
        <description><![CDATA[ 本篇原文（標題： A Complete Guide to Getting Hired as an iOS Developer in 2018）刊登於作者 Medium，由 Rob Caraway 所著，並授權翻譯及轉載。 耗費了我三個半月的精力，最後我還是沒有得到那份工作。  我學習了那間公司的一切，公司的事彷彿都變成了我的事。我連公司每個創辦人在網上發布的內容都一清二楚。  我將它浪漫化了太多。  我寫了大量的部落格文章，裡面包含了實際的程式碼和範例，闡述如何可以改善他們的 App。儘管我投資了這麼多精力，我必須說，要獲得一份工作實在是非常不容易。雖然我以前不相信這回事，但這樣說出來讓我感到安慰一點。  在我專注於他們公司的幾個月後，我終於獲得他們的注意。我與他們的技術總監通過一次話，他更邀請我嘗試他們的程式碼測試。我花了一週時間作準備，希望盡善盡美，他們的團隊亦對此印象深刻。我因而感到非常自信，而且勝券在握。  然後，我進行了他們準備的結對程式設計測試。  過了兩天，我收到他們的拒絕信，說我不是太合適。 ]]></description>
        <link>https://www.appcoda.com.tw/get-hired-as-an-ios-developer/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3c9</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 28 Sep 2018 18:28:35 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/08/1_CSEtc6xuG1-Va_JWQC7naQ.jpeg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift Design Pattern 系列教程 #3：外觀模式 (Facade) 與轉接器模式 (Adapter) ]]></title>
        <description><![CDATA[ 本教程是設計模式 (Design Patterns) 系列的第三部分，從本系列的第一篇文章開始，我們研究了「創建」類別的工廠方法模式 (Factory Method) 與單例模式 (Singleton) 兩個範例，第二篇文章則討論了「行為」類別的觀察者模式 (Observer) 與備忘錄模式 (Memento) 兩個範例。  在本次教學中，我將會解釋屬於「結構」類別的兩個範例：外觀模式 (Facade) 與轉接器模式 (Adapter)。我強烈建議你先閱讀前兩篇文章，以便熟悉軟體設計模式的概念。今天，除了簡單回顧設計模式的構成之外，我並不會再次複習先前提過的所有定義，所以你最好先回顧前兩篇文章。  讓我們在接下來幾節中，簡單回顧一下設計模式的一些定義。人稱「四人幫」（Gang of Four, GoF）的 Erich Gamma、Richard Helm、 Ralph Johnson 及 ]]></description>
        <link>https://www.appcoda.com.tw/design-pattern-structural/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3c8</guid>
        <category><![CDATA[ Design Pattern ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Mon, 24 Sep 2018 19:48:12 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/09/design-pattern-3-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift Design Pattern 系列教程 #2：觀察者模式 (Observer) 與備忘錄模式 (Memento) ]]></title>
        <description><![CDATA[ 本教程是上週設計模式 (Design Patterns) 系列教程的第二部分。人稱「四人幫」（Gang of Four, GoF）的 Erich Gamma、Richard Helm、 Ralph Johnson 及 John Vlissides 所著的 &#8220;Design Patterns: Elements of Reusable Object-Oriented Software&#8221;，開創、收集、並解釋了目前常見的 23 種經典軟體開發設計模式。今天，我們將集中討論「行為 (Behavioral)」類別中的兩種模式：觀察者模式 (Observer) 和備忘錄模式 (Memento)。  軟體開發是一種致力將現實世界情境模組化的過程，希望能夠建立工具來加強這個情境裡的使用者體驗。在財務管理方面的工具，例如銀行 App 或是購物工具如 ]]></description>
        <link>https://www.appcoda.com.tw/design-pattern-behavioral/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3c7</guid>
        <category><![CDATA[ Design Pattern ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Wed, 19 Sep 2018 12:40:44 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/09/michal-kubalczyk-505207-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift Design Pattern 系列教程 #1：工廠方法模式 (Factory Method) 與單例模式 (Singleton) ]]></title>
        <description><![CDATA[ 人稱「四人幫」（Gang of Four, GoF）的 Erich Gamma、Richard Helm、 Ralph Johnson 及 John Vlissides 所著的 &#8220;Design Patterns: Elements of Reusable Object-Oriented Software&#8221;，開創、收集、並解釋了目前常見的 23 種經典軟體開發設計模式 (design pattern)。本教學將會重點介紹其中兩個四人幫稱為「創建」的模式：工廠方法模式 (factory method) 以及單例模式 (singleton)。  軟體開發是一種致力將現實世界情境模組化的過程，希望能夠建立工具來加強這個情境裡的使用者體驗。在財務管理方面的工具，例如銀行 App 或是購物工具如 Amazon 或 eBay ]]></description>
        <link>https://www.appcoda.com.tw/design-pattern-creational/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3c6</guid>
        <category><![CDATA[ Design Pattern ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Fri, 14 Sep 2018 21:19:55 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/09/fabian-grohs-550489-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Memory Leaks （記憶體洩漏）可以導致 App 閃退？用單元測試就可輕鬆減少洩漏！ ]]></title>
        <description><![CDATA[ 實際上，記憶體洩漏 (Memory Leaks) 是開發者最常遇到的問題，我們一直寫程式碼來增加新功能，當 App 越來越大的時候，就需要了解記憶體洩漏的問題了。記憶體洩漏就是記憶體的某一部分被永久佔用、而無法再使用的情況；就如一個會佔用空間、並引致問題的垃圾，垃圾太多，就會導致記憶體不足而造成 App 閃退。 ]]></description>
        <link>https://www.appcoda.com.tw/memory-leaks/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3c5</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Mon, 10 Sep 2018 20:18:09 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/07/1_7ISuh6UwWtqCmfzSUpyUBw.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 12 新功能： AR Quick Look 讓你在 App 或網頁中展示 3D 模型 ]]></title>
        <description><![CDATA[ Apple 在 2018 全球開發者大會上發表了 ARKit 2.0 框架 (Framework)，它包含了新的 API 與開發虛擬實境 (Augmented Reality, AR) 的功能，其中一項功能就是在開發中提供 Quick Look API。若你不熟悉 Quick Look，它基本上只是一種框架，讓你預覽如 PDF、影像等不同格式的檔案，例如：在 iOS 的 Mail App 會利用 Quick Look 來預覽附件。  在 App 使用 Quick Look 的好處，就是你只需要列明哪種檔案格式你想用 Quick Look 來預覽即可。這框架處理 UI 與 ]]></description>
        <link>https://www.appcoda.com.tw/ar-quick-look/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3c4</guid>
        <category><![CDATA[ ARKit ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Wed, 05 Sep 2018 17:11:12 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/08/ar-quick-look-feature.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 生產力再提升：利用 Swift Package Manager 製作自動化開發者工具 ]]></title>
        <description><![CDATA[ Command Line Tool，通常指的就是能在 terminal 下指令執行的程式，身為一個利用 mac 做開發的工程師，一定非常熟悉，像是原始碼管理工具 git、自動化工具 fastlane、或是套件管理工具 homebrew，都可以算是 Command Line Tool 的一種。雖然現在有非常多 open source 的第三方工具可供使用，但並不是所有工具都能夠滿足我們在開發上的需求。舉例來說，如果我希望在建置我的 iOS 專案之前，都先連上內部 server 下載 logo 更新；或者我想要在每次建置成功後，把 log 複製一份上傳到內部 server 存放，這些都可能沒有對應的第三方工具可以使用。  因為每個人的工作習慣都不太一樣，所以如果想要最大化我們的工作效率，就應盡量減少重覆、手動、繁瑣的工作，那我們就需要了解如何製作自己的 Command Line ]]></description>
        <link>https://www.appcoda.com.tw/swift-package-manager/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3c3</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Huang ShihTing ]]></dc:creator>
        <pubDate>Fri, 31 Aug 2018 20:52:44 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/08/max-nelson-492729-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Playground 驅動開發 ：助你加快編譯過程 大大提高開發效率 ]]></title>
        <description><![CDATA[ 本篇原文 （標題: Playground driven development in Swift） 刊登於作者 Medium，由 Khoa Pham 所著，並授權翻譯及轉載。 需要快速調整 UI 的需求 流動程式開發者的使命，就是為用戶提供最佳用戶體驗，透過應用程式讓他們的生活更愉快、更輕鬆。其中一項任務就是確保 UI（用戶操作介面）好看而正確。大多數時候，我們可以說應用程式是將數據美化呈現，我們主要從後端獲取 JSON 數據，將其解析為模型，然後使用 UIView（主要是 UITableView 或 UICollectionView）進行渲染。  進行 iOS 開發時，開發人員需要根據設計不斷調整 UI，以切合小型手持設備。這個過程牽涉更改程式碼、編譯、等待、檢查，然後再次更改程式碼等…… 像 ]]></description>
        <link>https://www.appcoda.com.tw/playground-driven-development/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3c2</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Mon, 27 Aug 2018 17:23:34 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/08/1_EbrVuz1m60emAKFrBdboCg.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 12 新通知功能：添加互動性 在通知中實作複雜功能 ]]></title>
        <description><![CDATA[ 如果你看了 Apple 的 &#8220;What’s New in iOS 12&#8221; 網站的話，會看到 &#8221; Interactive Controls in Notifications &#8221; 這個段落，寫著：  通知內容應用擴展 (Notification content app extensions) 現在支援自定義視圖中的使用者互動性，如果 App 通知的內容需要驅使使用者互動，可請添加按鈕和開關等控件。   在本次的教學裡，我會讓你看看如何讓本地或是遠端（推播）通知擁有一個客製化使用者介面 (UI)。使用者現在可以跟你的通知內容進行互動。而 iOS 12 則讓我們能夠添加一個可以客製化的 UIViewController 子類別到通知本身。我們可以加入一些控件如 UIButton、UIImageView 以及 UISwitch 到 ViewController ]]></description>
        <link>https://www.appcoda.com.tw/user-notifications-ios12/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3c1</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Wed, 22 Aug 2018 17:16:32 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/08/tyler-lastovich-454485-unsplash-2048.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Turi Create 機器學習模型實戰：你也能輕鬆做出 Prisma 風格的圖片！ ]]></title>
        <description><![CDATA[ 如果你一直有關注 Apple 去年所發佈的消息，就會知道他們在機器學習上投入了大量心力。自他們去年在 WWDC 2017 上推出 Core ML 以來，已經有大量結合機器學習技術的應用程式湧現。  但是，開發人員經常遇到的其中一個挑戰是：如何創建模型？幸運的是，Apple 在去年冬天宣布從 GraphLab 收購了 Turi Create，正正解決了我們的問題。Turi Create 是 Apple 的工具，可以幫助開發人員簡化創建客製化模型的步驟。使用 Turi Create，你可以建立自己的客製化機器學習模型。  Turi Create 快速入門 如果你有關注其他機器學習教學文章，你可能會覺得奇怪，「今年 Apple 不是有發佈一個叫 Create ML 的工具嗎？那相較於 Create ML 來說，Turi Create ]]></description>
        <link>https://www.appcoda.com.tw/coreml-turi-create/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3c0</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Fri, 17 Aug 2018 17:11:58 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/08/drew-hays-29234-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ MVVM VS MVC：透過 MVVM 設計模式重構 MVC 應用程式 減低應用程式的複雜性 ]]></title>
        <description><![CDATA[ 在 iOS 開發人員維護軟體工程時，設計模式是一項非常重要的工具。我將在下文介紹一些設計模式、以及最佳的實踐方式，希望可幫助開發人員創建可靠並可維護的應用程式，換句話說，設計模式可以幫助你管理軟體的複雜性。在本教程中，我將會介紹 MVVM 設計模式，並以非常有名的 MVC 設計模式作比較。 ]]></description>
        <link>https://www.appcoda.com.tw/mvvm-vs-mvc/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3bf</guid>
        <category><![CDATA[ Design Pattern ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Mon, 13 Aug 2018 18:02:22 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/08/jantine-doornbos-398339-unsplash-1.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 十個月就破百萬下載：發票對獎機 App 開發心得 ]]></title>
        <description><![CDATA[ 本篇原文（標題： 菜鳥工程師的 10 個月百萬下載 App 開發心得）刊登於作者 Medium，由 Alexander Pan 所著並授權轉載。  小小菜鳥工程師在 2017 年 8 月份收到公司的開發計畫：開發 發票對獎機 App 以 Scrum 進行專案開發。  主要成員為 ：  Product Owner PM 後端 設計 iOS &#038; Android 工程師（就是我） 系統工程師 行銷 第一版主要功能：掃描對獎、後三碼對獎、發票紀錄、中獎號碼，而給使用者的感受目標設定是掃得凖、掃得快和流暢的使用體驗。準備搶在兩個禮拜後的 2017 年 9 月 25 ]]></description>
        <link>https://www.appcoda.com.tw/invoice-machine/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3be</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Thu, 09 Aug 2018 17:11:51 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/08/alexa-suter-575934-unsplash-1.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Siri 終於可以派上用場了？快來看看 Siri Shortcut 的新功能吧！ ]]></title>
        <description><![CDATA[ 今年在聖荷西舉辦的 WWDC 2018 大會上，Apple 發佈了令人期待已久的功能 Siri Shortcut，它使開發者能夠在自己的應用程式當中延伸及增強 Siri 的功能。在這之前，SiriKit SDK 整體的功能非常有限，隨著 Siri Shortcut 的出現，開發者能夠延伸 Siri 的功能，並建構客製化語音指令來呼叫應用程式。  Siri Shortcut 的歷史 Siri Shortcut 的核心其實是自動化，實際上 Siri Shortcut 是從 WWDC 前學者建構的自動化應用程式 Workflow 演變而來。Apple 在 2017 年收購了 Workflow，而不尋常的地方是，在收購之後 Apple 依然把 Workflow 保留在 App Store ]]></description>
        <link>https://www.appcoda.com.tw/siri-shortcut/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3bd</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gregg Mojica ]]></dc:creator>
        <pubDate>Wed, 01 Aug 2018 18:03:50 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/08/daria-shevtsova-411553-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 還在猶豫應該用哪種導航形式？教你實作連 Apple 都喜歡用的 UITabBar！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：Creating a UITabBarController Framework）刊登於作者 Medium，由 Malcolm Kumwenda 所著並授權翻譯及轉載。  導航 (navigation) 是所有應用程式中最重要的一個部分，選擇如何將用戶導向不同頁面，正正就決定了你的應用程式能否成功。  從 AppStore 觀察使用者資訊，我們很清楚哪種導航方式最多人使用，你可以叫它們做漢堡選單 (Hamburger menus)、或是滑動選單 (Sliding menus)、又或是側邊欄 (Sidebars)，這種導航形式幾乎成為各種應用程式的首選。就我個人而言，就發現 Sidebar 有很多缺陷，但我不是 UX 設計師，因此你在本文中會讀到更多設計面向 (design-oriented) 的評論。  你可能已經從文章的標題中看出，我最喜歡的應用程式導航方式是 UITabBar。看看我們親愛的蘋果公司的應用程式，大多數都會使用 UITabBar，例如：App Store、Watch、 ]]></description>
        <link>https://www.appcoda.com.tw/uitabbarcontroller/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3bc</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Thu, 26 Jul 2018 21:00:40 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/07/1_NRjP_p-5tbuLd_mGiPzr7g-1.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Core ML 2.0 新功能總覽：讓你的開發過程更流暢 ]]></title>
        <description><![CDATA[ 今年在 2018 WWDC 的大會上，Apple 發表了 Core ML 2.0。這最新版本強調開發過程的流暢性，包括最佳化機器學習模型大小，改善執行的效能，並提供開發者客製化自己的 Core ML 模型。 這次教學將講解所有 Core ML 2.0 新增加的功能，並且教你如何在 App 上運用。 ]]></description>
        <link>https://www.appcoda.com.tw/core-ml-2/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3bb</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Mon, 23 Jul 2018 21:28:37 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/07/andras-vas-655226-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 解析 View Controller 生命週期：使用 viewDidLayoutSubviews 的時機 ]]></title>
        <description><![CDATA[ 編輯的話：之前，我們新增了新的教學系列，來回答 iOS App 開發上的常見問題。對初學者來說，其中一個問題就是何時該使用 viewDidLayoutSubviews。在本次的教學裡，Kelvin 將會探討一些 View Controller 生命週期裡的方法，並解釋 viewDidLayoutSubviews 方法的用途。 我們這些 iOS 開發者總是會擔心自己缺乏某些知識、或是覺得自己技術不足；但我可以告訴所有開發者，你們知道的其實很多，你只需要對自己有耐性，繼續努力完成日常工作、或是維持撰寫程式這個興趣就好。  經常有文章列出很多成為 iOS 開發者前應該知道的東西，但是要懂多少才算是足夠呢？今天我們將會專注在一些「小事情」上，讓我們對基礎知識有更清晰的了解。我們會先了解那些每天都在新專案中用到的小小程式碼，因為我相信小事情會給我們大智慧。  在本次的教學裡，我們將會了解 viewDidLoad、viewDidAppear 以及 viewDidLayoutSubviews 的不同之處。讀過教學以後，我們希望你對此有更深入的理解，並可以有效地使用文中提及的方法。  我會試著用不同的方式來解釋這三個方法，因為我們都知道有時文字敘述真的很難懂。 ]]></description>
        <link>https://www.appcoda.com.tw/view-controller-lifecycle/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3ba</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Kelvin Tan ]]></dc:creator>
        <pubDate>Fri, 20 Jul 2018 20:54:04 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/07/viewdidload-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 iOS 整合 Google ML Kit，讓你輕鬆為 App 導入機器學習功能 ]]></title>
        <description><![CDATA[ 在 Google I/O 2018 開發者大會上，Google 發表了一款全新的開發工具 ML Kit 給開發者。有了 ML Kit，你只需要很少程式碼就可以執行各種機器學習任務。在本次教學中，我們會選擇 Google 使用的模型，因為加入自己的模型必須使用 TensorFlow、並對 Python 有相當程度的瞭解。 ]]></description>
        <link>https://www.appcoda.com.tw/ml-kit/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3b9</guid>
        <category><![CDATA[ Machine Learning ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Mon, 16 Jul 2018 20:04:54 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/07/mlkit-logo.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Table View 太複雜？利用 MVVM 和 Protocol 就可以為它重構瘦身！ ]]></title>
        <description><![CDATA[ UITableView 或者 UICollectionView 絕對是 iOS 工程師一定會使用到的 UI 元件，甚至可以說大多數 app 的 UI 都是圍繞著 tableView 來設計。隨著手機介面體驗的進步，tableView 也變得越來越複雜，尤其是像 news feed、photo wall 等，一個 cell 塞滿各種功能的設計，近幾年來已經成為手機開發的基本款。基本上一張 tableView 裡就有很多種 cell，如果把所有的 code 都塞在 UITableViewController 或任何 viewController 裡面，一個檔案幾千行 code 應該跑不掉了，這樣要修改或新增 code 都相當困難。如果你曾經參與過 app 整個開發流程，就一定會發現修改規格已經成為工作上不可或缺的一部分。一開始新增一個 ]]></description>
        <link>https://www.appcoda.com.tw/tableview-mvvm/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3b8</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Huang ShihTing ]]></dc:creator>
        <pubDate>Tue, 10 Jul 2018 19:36:36 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/07/tableview_featurephoto.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何用 Swift 打造你的第一個區塊鏈 App ]]></title>
        <description><![CDATA[ 區塊鏈 (Blockchain) 是一種突破性技術 (Disruptive Technologies)，近年漸獲關注。為什麼呢？因為區塊鏈是許多加密貨幣 (Cryptocurrencies) 如比特幣 (Bitcoin)、以太坊 (Ethereum)、萊特幣 (Litecoin) 的創始技術。那區塊鏈是如何運作的呢？在本次的教學裡，我將會談到所有關於區塊鏈技術的知識，以及如何用 Swift 來製作自己的「區塊鏈」。 ]]></description>
        <link>https://www.appcoda.com.tw/blockchain-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3b7</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Wed, 04 Jul 2018 19:00:41 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/06/blockchain-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何在視圖和按鈕上設定特定的圓角 (Rounded Corners) ]]></title>
        <description><![CDATA[ 我們目前正進行一個新系列的教學，主要回答一些常見問題，從簡單的初學者問題、到複雜的進階問題亦會覆蓋到。今天我們的問題是：我知道如何在視圖 (View) 或按鈕 (Button) 上設定圓角 (Rounded Corners)。但如果我只想設定某一角為圓角，並非所有角都設定為圓角，要如何在 Swift 實現呢？ ]]></description>
        <link>https://www.appcoda.com.tw/rounded-corners-uiview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3b6</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Thu, 28 Jun 2018 19:06:13 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/06/rounded-view-corner.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 搶先預覽 Xcode 10 的全新功能 ]]></title>
        <description><![CDATA[ WWDC18 帶來許多令人興奮的好消息，iOS 12、Swift 4.2 和 Xcode 10 ，每個都有許多有趣的新功能。但對 App 開發者來說，馬上可以派上用場的莫過於 Xcode，畢竟我們開發的 App 未必需要 iOS 12 的 Siri Shortcuts 和 ARKit 2，程式碼也不見得會用到 Swift 4.2 的新功能。因此，接下來的時間，我們就把時間交給 Xcode 10，看它大顯神威吧。  下載 Xcode 10 beta 連到 Xcode 10 beta 的下載頁面，點選 Download 下載。 ]]></description>
        <link>https://www.appcoda.com.tw/xcode-10/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3b5</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 彼得潘 ]]></dc:creator>
        <pubDate>Mon, 25 Jun 2018 10:09:07 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/06/macbook-pro-xcode-10.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Magic Sketch 專訪：從錯誤中學習 不斷改進產品 就是成功之道 ]]></title>
        <description><![CDATA[ James Tang，Sketch 套件 Magic Mirror (現為 Magic Sketch) 的開發者，同時也是位 UI/UX 設計師及個人企業家。現在，讓我們來一探他從一間香港新創公司辭職、到成功實現自己 idea 的奇妙旅程。是次專訪涵蓋了 James 的實驗、學習、在第一個成功產品 Magic Mirror 前的種種失敗、如何開始建立產品，以及早期的錯誤經驗如何教導他創造收益，希望這些經驗之談可以幫助開發者、UX 設計師和創業家，讓他們都能成功實現自己的 idea。 ]]></description>
        <link>https://www.appcoda.com.tw/magic-sketch/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3b4</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Wed, 20 Jun 2018 00:20:17 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/05/james4.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 好想工作室：免費的 Backend / iOS / Android 學習機會 ]]></title>
        <description><![CDATA[ 好想工作室 這次同時開放 iOS / Android / Backend 三個 camp 的學習機會。不論你是曾經想要又或者當下想要學習寫程式，只要你有心，我們都歡迎你。而因為這三個 camp 都是由我來帶領的，所以在你決定加入以前，我覺得你需要先了解我有什麼樣的經歷，側面了解 camp 會有什麼樣的風格。 ]]></description>
        <link>https://www.appcoda.com.tw/goodideas-studio/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3b3</guid>
        <category><![CDATA[ Android ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Thu, 14 Jun 2018 18:53:42 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/06/photo-3-e1528897808803.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Create ML 簡介：如何在 Xcode 10 構建不同的機器學習模型 ]]></title>
        <description><![CDATA[ 你知道嗎，Apple 的全球開發者大會 (WWDC) 已經在上週舉行了！在這會議上，Apple 對現有的軟體和框架發佈了不少改進，而其中一個框架就是 Create ML 。  去年，Apple 推出了 Core ML，這工具讓你以最少的程式碼迅速將預先訓練好的機器學習模型導入 App 內。今年，Apple 透過 Create ML 這項工具，讓開發人員有能力透過 Xcode Playground 建立自己的機器學習模型 ，我們只需要一些數據就可以進行訓練了！雖然到目前為止，Create ML 僅支援文字、圖像和表格為數據，但大多數 ML 應用程式就是由這三種數據組成，因此應該能夠滿足你的需求了。現在，讓我向你展示如何使用這三種數據創建 ML 模型吧！  [圖片來源：Apple]  編者提醒：本教學建基於 Xcode 10 beta ]]></description>
        <link>https://www.appcoda.com.tw/create-ml/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3b2</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Tue, 12 Jun 2018 18:26:14 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/06/create-ml-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ GitLab 初學者指南: 輕鬆為 iOS 專案設定持續集成（CI/CD） ]]></title>
        <description><![CDATA[ 我從來都沒有使用過 Gitlab-CI/CD 和 Fastlane，到底要如何使用它們來做集成 (Intergration) 呢？我們 Lodoss 團隊最近就遇到這個問題了。這篇入門指南將分享我們的每一個步驟，從初期的設想到最後的結果，讓你能輕易理解 GitLab-CI/CD 和 Fastlane 兩種工具。 ]]></description>
        <link>https://www.appcoda.com.tw/gitlab/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3b1</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 08 Jun 2018 11:24:55 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/04/1_HsoL5Vf1Vu1c-z-ahgzY6Q.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何在你的 iOS App 加入 Drag and Drop 功能 ]]></title>
        <description><![CDATA[ 歡迎來到拖放 (Drag and Drop) 操作系列教程的第一部分。在這篇教學中，你將會學習到如何將拖放功能實作到 UIViewController。而下一部教學中，就會學習如何使用帶有 UITableViewControllers 和 UICollectionViewControllers 的拖放 API。  iOS 11 推出時最令人期待的，就是公佈了幾個新拖放 API。如果你不太了解拖放功能，讓我來解釋一下吧。拖放功能是一種方式，讓你將數據從一個 App 移動或複製到另一個 App、或是在同一個 App 中進行移動或複製。  要將拖放操作實作到 App 中可以有很多範例，亦有許多 API 讓你針對不同場景進行實作，而且實作起來非常簡單。 我將教你如何在 App 中實作拖放，特別是關於 UIViewController 的拖放。讓我們開始吧！  注意: 這些拖放 API 僅適用於 Swift 4 ]]></description>
        <link>https://www.appcoda.com.tw/drag-and-drop/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3b0</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Mon, 04 Jun 2018 08:04:10 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/05/taras-shypka-424932-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 開發者指南：如何利用 Core Bluetooth 製作一個監控心率 App ]]></title>
        <description><![CDATA[ 作為 iOS 開發人員，我們非常清楚人類喜歡可連接的應用程式。人類喜歡透過無線設備與其他人相互聯繫，我們期望可以與設備溝通，我們亦開始喜歡、並期望這些無線設備 (通常是「可穿戴設備」) 可以收集和分析關於自己的數據。很多設備已經成為生活中不可缺少的一部分，我們以一個常用短語來形容它們 ──  &#8220;Internet of Things&#8221; 或 &#8220;IoT&#8221; (物聯網)。目前全球有數十億無線通信設備，在本教程中，我們將專注於其中一部分：Bluetooth&reg;.  我將解釋 Bluetooth&reg; 背後的基本概念與技術，以及：  解釋為何精通 Bluetooth&reg; 軟體開發，可以為你帶來大量就業機會； 提醒你在發佈一個使用 Bluetooth&reg; 的應用程式前，必先通過「認證」； 為你提供 Apple Core Bluetooth 框架的概述 (另外也請參考這篇文章) ]]></description>
        <link>https://www.appcoda.com.tw/core-bluetooth/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3af</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Thu, 31 May 2018 21:24:02 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/05/alvaro-reyes-500037-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何利用 Swift 協定導向撰寫網路層應用 ]]></title>
        <description><![CDATA[ 本篇原文（標題：Writing a Network Layer in Swift: Protocol-Oriented Approach）刊登於作者 Medium，由 Malcolm Kumwenda 所著並授權翻譯及轉載。  本次教學將講述如何不使用第三方套件，只用 Pure Swift 來實作網路層。那我們就直接開始吧！閱讀完這篇教學內容後，我們的程式碼應該會是：  協定導向 易於使用 易於實作 型別安全 使用列舉 (Enum) 來配置 endPoints 以下是我們最終完成的範例:    只需要使用列舉來輸入 router.request(.，我們就可看到所有可用的 endPoints、以及所需的參數。  首先，來點架構 在創作任何東西時，最重要的是要有架構，這樣以後要找出問題所在就很容易了。我十分相信，資料夾結構是整個軟體架構的關鍵。為了讓檔案井然有序，我們先建立檔案群組，我亦會指示每個檔案應該放的地方。這是專案架構的概覽。 ]]></description>
        <link>https://www.appcoda.com.tw/network-layer/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3ae</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 25 May 2018 20:35:47 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/05/1_Kye90jVLsFUfHx2AQ497wg.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 沒有設計背景都可以做 UI 設計 ？ 三個提升 UI 能力的方法！ ]]></title>
        <description><![CDATA[ 本篇原文（標題：如何提升 UI 設計能力？實務篇）刊登於女人迷設計實驗室 PHD Lab，由女人迷網站設計師 Merci 所著並授權轉載。  此篇文章適合：想轉行做 UI 設計 ，但 UI 經驗少、想累積/ 提升 UI 能力的設計師。如果你已經累積了許多 UI 實戰經驗，也很歡迎你與我們分享。  會有這篇，是因為有人請教我如何提升 UI 設計能力。提問者在學校有一點點使用者研究經驗，想要提升更多 UI 實戰經驗、累積作品集。這裏不談 UI/ UX 設計師的職涯發展與工作景況，只聚焦於 UI 設計。  他的痛點有：  看過網路上的教學文或相關書籍等資源，還是不太知道怎麼下手 不是設計背景，身邊沒有有相關經驗的人可以請教、回饋 因為沒有足夠經驗， ]]></description>
        <link>https://www.appcoda.com.tw/ui-skills/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3ad</guid>
        <category><![CDATA[ UI ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Mon, 21 May 2018 18:22:37 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/05/hal-gatewood-613602-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 程式碼時光機：應用 Git 版本控制，即使犯錯也不怕 ]]></title>
        <description><![CDATA[ 每個人都會犯錯，這是人性的一部分。我肯定每個人都曾在編寫程式碼時犯過嚴重錯誤，嚴重到希望有一部時光機，讓時間倒流回犯錯之前。正因為這種錯誤，每個程式工程師都應該在開發專案中使用版本控制；不使用版本控制的後果，就等於電腦不備份一樣，一個突然的意外或資料遺失就會讓整個專案受到極大影響。  版本控制能讓你回溯之前的專案版本，可以回復遺失的資料，或是查看程式碼的進程。另外，使用版本控制後，與其他人合作同一個專案就容易得多。相信許多人都會同意 Git 是最佳的版本控制系統，而非常幸運地，現在 Xcode 已經將 Git 整合在開發平台內了！  很多人都錯誤以為 GitHub 和 Git 是同一樣東西，但這是錯的。Git 是一個在你自己電腦本機端運行的版本控制系統，而 GitHub 則是一個線上服務，讓你將 Git 版本資訊儲放至雲端，就像是 iCloud 雲端硬碟，但它是專屬於程式碼的應用，而且功能更強大。    Apple 在推出 Xcode 9 的時候已經與 GitHub ]]></description>
        <link>https://www.appcoda.com.tw/git-xcode/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3ac</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Mitchell Sweet ]]></dc:creator>
        <pubDate>Tue, 15 May 2018 10:03:04 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/05/github-xcode9-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ ARKit 教學：2D 圖像識別功能 ]]></title>
        <description><![CDATA[ 歡迎來到第六回 ARKit 教學系列的文章！本週，我們將談談關於擴增實境 (Augmented Reality, AR) 中的圖像識別功能。自 iOS 11.3 起，ARKit 就能識別 2D 圖像。如果你有興趣學習製作 ARKit 圖像識別 App，這篇教學文章就很適合你了。    Many AR experiences can be enhanced by using known features of the user’s environment to trigger the appearance of virtual content. For example, a museum app ]]></description>
        <link>https://www.appcoda.com.tw/arkit-image-recognition/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3ab</guid>
        <category><![CDATA[ ARKit ]]></category>
        <dc:creator><![CDATA[ Jayven N ]]></dc:creator>
        <pubDate>Tue, 08 May 2018 10:02:20 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/05/arkit-demo-image-cover.jpeg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Fastlane/Jenkins：一人團隊也用得上的 Continuous Delivery 系統 ]]></title>
        <description><![CDATA[ 本篇原文（標題：歡迎來到真實世界 – Continuous Delivery：在你睡覺的時候，電腦們可是都在勤奮地工作喔）刊登於作者部落格，由 Neo 所著並授權轉載。  在 iOS 開發的世界，有個非常有趣、但也非常痛苦的地方，就是 iOS 的開發者需要的基本知識非常多。Cocoa framework 本身就涵蓋了前端的 UI 邏輯，與資料庫等等的後端邏輯，既要注意頁面跟頁面之間狀態的處理，也要小心記憶體的運用，有時候還要學貝茲曲線跟 3D 轉場。雖然每一樣都不可能像各領域的專家一樣精通，但也算是工程師裡武器相當多的種族了。今天，想和大家分享身為 iOS 工程師，你可能還可以多學的技術：Continuous Delivery！身為一個工程師，你一定或多或少聽說過 Continuous Intgration 跟 Continuous Delivery (CICD)；但是實際生活中，除非是跟一個團隊一起開發，不然應該很少有機會碰到 ]]></description>
        <link>https://www.appcoda.com.tw/continuous-delivery/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3aa</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 04 May 2018 19:34:57 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/04/lee-campbell-86958-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Protocol Oriented Programming：POP 真的比 OOP (物件導向編程) 更好嗎？ ]]></title>
        <description><![CDATA[ 本篇文章將利用 Swift 4 深入討論 “Protocol Oriented Programming” (POP，協定導向程式設計)。本文是 POP 系列文章的第二篇、亦是最後一篇文章，如你尚未讀過這篇簡介文章，請先看過之後再繼續這篇教程。  今天，我們將討論為什麼 Swift 被認為是「協定導向 (Protocol-oriented)」的程式語言、比較 POP 和 OOP (Object Oriented Programming，物件導向程式設計)、比較數值語義 (Value semantic) 和參考語義 (Reference semantics)、研究 Local reasoning、利用協定實現委任 (Delegation)、使用協定為類型或實現多型 (Polymorphism)、並檢視我在現實世界中以 POP 實作的 Swift 程式碼，最後討論為什麼我沒有完全投向 POP ]]></description>
        <link>https://www.appcoda.com.tw/pop-vs-oop/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3a9</guid>
        <category><![CDATA[ Object Oriented Programming ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Mon, 30 Apr 2018 08:13:56 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/04/lauren-mancke-60627-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Protocol Oriented Programming：簡介 Swift 的協定導向程式設計 ]]></title>
        <description><![CDATA[ 軟體開發者最大的敵人就是程式複雜度，所以當知到有新技術可以保證幫我處理這個混亂狀況，我便聽聽這是什麼新玩意。在 Swift，近年（至少自 2015 年以來）最「火熱」的方法論中，獲得最多關注的莫過於 &#8220;Protocol Oriented Programming&#8221; (POP，協定導向程式設計) 了。本篇文章將使用 Swift 4。在我撰寫程式碼的時候，我發現 POP 的確可以保證處理遇到的混亂狀況。有趣的是蘋果官方宣稱「從核心來看，Swift 其實是協定導向 (Protocol-Oriented) 的程式語言 」。這篇文章將分享我使用 POP 的經驗，為這個嶄露頭角的技術提供一個清晰簡潔的教學。  我將會解釋 POP 的核心概念、提供大量的範例程式碼、不可避免地比較 POP 和 OOP (Object Oriented Programming，物件導向程式設計) ]]></description>
        <link>https://www.appcoda.com.tw/protocol-oriented-programming/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3a8</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Wed, 25 Apr 2018 08:48:19 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/04/kevin-bhagat-461952-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 工程師：成功轉職者分享面試心得 ]]></title>
        <description><![CDATA[ 本篇原文（標題：iOS 工程師：面試準備分享）刊登於作者  部落格，由 Pala 所著並授權轉載。  這篇文章為接觸 iOS 開發半年內、以及考慮轉職的朋友，提供一些我後悔沒早點知道的資源。  2017 轉職來到尾聲 部落格記錄著我從離職後，一路走過來的 iOS 學習資源和過程，現在來個結案報告！  去年五月離職，朝轉職為 iOS App 工程師前進，因為下班慢慢摸索進度太慢，決定 All in。  當時我已經具備基礎網頁設計能力，如果單純以轉職工程師考量，就轉換難度來說，網頁工程師之於我門檻相對較低；考慮到實際就業環境，大部分公司和消費者對於網頁的使用需求大於 App，自己使用時間佔比也是、所以就職缺數量來說，我想網頁工程師對新人相對友善。  基於上述兩點，我決定往 iOS 工程師前進，因為評估後覺得這條路對我來說比較難走，而我喜歡挑戰。  在離職八個月後，也就是 2018 ]]></description>
        <link>https://www.appcoda.com.tw/ios-developer-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3a7</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 20 Apr 2018 08:44:28 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/04/helloquence-61189-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 開發者指南：透過 Swift 4 學習 Delegates 與 Delegation ]]></title>
        <description><![CDATA[ 本文主要講述 &#8220;delegates&#8221; 與 &#8220;delegation&#8221;。利用本文提供的完整專案源碼，我們將做一個簡單示例，在 Swift 4 中實現 delegation 設計模式。我將展示 delegation 的操作方式，讓你不再在複雜的專案中陷入困境。為了讓你成為頂尖開發者，我將會介紹最棒的設計工具 UML，以協助物件導向軟件開發。文中所展示的 UML 圖，設計並記錄了專案範例中使用 delegation 設計模式的實作。  我將展示如何構建一個 user interface (UI) helper，這是一個在指定 URL 下載文件的類別。最重要的是，文中會展示在圖像文件已完成下載後，UI helper 如何通過 delegation 通知 UIViewController 子類別，讓視圖控制器可在螢幕上顯示圖像。為了簡單明瞭，我們假設 ]]></description>
        <link>https://www.appcoda.com.tw/swift-delegates/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3a6</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Tue, 17 Apr 2018 21:04:50 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/04/ash-edmonds-510566-unsplash.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Apple App Review：解析審核 App 的漫長旅途 ]]></title>
        <description><![CDATA[ 本篇原文（標題：被蘋果打槍後， 一個月後才再次審核 App 的故事）刊登於作者  部落格，由 Lenny Chen 所著並授權轉載。  相信 Mobile App 開發者在送出版本到 App Store， 都像是在等一個不知道會因為什麼被打槍的奇幻旅程。 上次送審呆呆神射手時， 居然經過了一個月後才重新被審核， 有趣的是， 當我分享這段過程到開發者論壇後， Apple 的人居然回應了我的問題， 並解開了許多審核的秘辛。  讓我分享給大家知道。    當時前一次打槍的理由是這樣的：  1. 1 Safety: Objectionable Content 5. 2.1 Legal: Intellectual Property – General  Guideline 1.1.6 – Safety – Objectionable Content Your app’s ]]></description>
        <link>https://www.appcoda.com.tw/apple-app-review/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3a5</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 13 Apr 2018 08:51:59 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/04/appstore-0.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 應用 AVFoundation 建立一個全螢幕相機 App ]]></title>
        <description><![CDATA[ 今天，我們將學習如何使用 AV Foundation ，它是一個 Apple 系統框架，適用於 macOS、iOS、watchOS 和 tvOS 操作系統上。本教學的目標就是幫助你開發一個有完整功能的 iOS App，能夠使用裝置的相機來拍照與錄影。我們亦會以物件導向程式基礎，設計一個實用的類別，讓它可重覆使用與延伸至你所有的專案中。    注意：本篇教學需要用到實體 iOS 裝置，單靠模擬器無法完成本篇的示範 App。且本篇教學需要讀者對 UIkit 基礎有深入了解，包括如 Action (動作)、Interface Builder (介面建構器)、與 Storyboard (故事板)，並對 Swift 語法有一定程度的了解。   提示：你需要使用 Xcode 9（或以上版本）執行此範例程式，所有程式碼已更新至 Swift ]]></description>
        <link>https://www.appcoda.com.tw/avfoundation-camera-app/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3a4</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Pranjal Satija ]]></dc:creator>
        <pubDate>Mon, 09 Apr 2018 10:08:30 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/03/full-screen-camera.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 實測 JSON Decode：Codable Protocol 真的這麼好用嗎？ ]]></title>
        <description><![CDATA[ 本篇原文（標題：真實世界的 JSON Decode）刊登於作者  Medium，由 David Lin 所著並授權轉載。  雖然這次 Apple 幫我們做出了 Codable 這個好用的 protocol，但上了戰場之後呢？ 如果你已經試過 Swift 4 提供的 Codable protocol，你應該發現 json decode 在 Swift 中已經不像以前那麼不方便了，也不需要再經過 dictionary 的轉換拖慢 decode 速度（像是第三方解析 json 套件：SwiftyJSON）。但 Codable 真的這麼好用嗎？不知道你有沒有注意到，有時候 backend 會因為使用套件的關係，回傳的 json 中會有 {} （空的 ]]></description>
        <link>https://www.appcoda.com.tw/json-decode/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3a3</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 06 Apr 2018 08:30:26 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/04/JSON-decode.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Core ML 教學：如何利用 Python 和 Turi Create 來建立自訂模型 ]]></title>
        <description><![CDATA[ 近年，越來越多人應用機器學習 (Machine Learning) 演算法，以解決問題或執行複雜的功能。利用機器學習，我們可以使用大數據來執行複雜的功能，例如圖像分類與語音辨識。  此外，Apple 最近公佈了一個框架 Core ML，以簡化將機器學習模型整合在 macOS 、 iOS 、 tvOS 與 watchOS 裝置上的程序。Apple 也提供了 Code ML 模型樣板來測試這個框架。  首次公佈 Core ML 時，軟體開發者要建立自己的 Core ML 模型是挺困難的，因為開發者需要先具備機器學習的經驗。  然而，感謝 GraphLab 和 Apple，現在我們有了 Turi Create，一個讓我們可以很簡單地建立 Core ML 模型的框架。Turi Create 提供必須的機器學習演算法例如 ]]></description>
        <link>https://www.appcoda.com.tw/core-ml-model-with-python/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3a2</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Ahmed Fathi Bekhit ]]></dc:creator>
        <pubDate>Tue, 03 Apr 2018 09:08:31 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/03/soup-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 4 Generics: 如何在程式碼及 iOS App 中應用泛型 ]]></title>
        <description><![CDATA[ 問題一：我可以撰寫一個 Swift 函式，來找出存放在任意陣列裡、某個任意型別特定實例的索引或位置嗎？  問題二：我可以撰寫一個 Swift 函式，來確認某個任意型別的特定實例，是否存在於任意陣列裡？  所謂「任意」型別，是指包含了我自己定義的型別 (像 Class)。附註：我知道可以使用 Swift Array 型別內建的函式：index 以及 contains，但這次我會使用簡單的程式碼來說明 Swift 泛型 (Generics) 的一些要點。  總括來說，我會涵蓋 泛型程式設計 (Generic Programming) 的內容，它是：    &#8230; a style of computer programming in which algorithms are written in ]]></description>
        <link>https://www.appcoda.com.tw/swift-generics/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3a1</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Andrew Jaffee ]]></dc:creator>
        <pubDate>Mon, 26 Mar 2018 10:52:38 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/03/nate-grant-374649.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ ARKit 教學：實作火箭飛船發射，學習 SceneKit 和 Physics ]]></title>
        <description><![CDATA[ 它剛才移動了嗎？這是真的嗎？這其實是擴增實境 (Augmented Reality，簡稱 AR)。歡迎回到 ARKit 教程系列的第四部分。在本教程中，我們將在 ARKit 中理解 Physics 基礎知識，並且將在本教程結束之前製作一台飛船，開始吧！  首先，我們從下載初始項目開始。建立並運行它，應該會出現警示窗，要你允許在應用程序中使用相機。    點擊 OK，如果一切順利的話，應該可以看到相機視圖。  另外，本教程建立在先前教程的知識之上，如果在本文中遇到什麼難題，請隨時查閱 ARKit教程系列。  理解 Physics Body 首先來介紹 physics body，這是建立相關應用的基本元件之一，為了讓 SceneKit 知道如何在應用程式中模擬一個 SceneKit 節點 (node)，我們需要附加一個SCNPhysicsBody，SCNPhysicsBody是一個將 physics simulation 添加到 ]]></description>
        <link>https://www.appcoda.com.tw/arkit-physics-scenekit/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b3a0</guid>
        <category><![CDATA[ ARKit ]]></category>
        <dc:creator><![CDATA[ Jayven N ]]></dc:creator>
        <pubDate>Wed, 21 Mar 2018 08:49:10 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/02/photo-1457365050282-c53d772ef8b2-1680x1120.jpeg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 傳送告白推播的 Push Notification ]]></title>
        <description><![CDATA[ 每天我們會收到來自不同 App 的推播訊息。作為 iOS 開發者，你又可以如何在 App 建立推播訊息功能呢？彼得潘將教大家實作一個接收播推的 App，相信到時候你用自己親手做的 App 推播告白訊息。 ]]></description>
        <link>https://www.appcoda.com.tw/push-notification/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b39f</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 彼得潘 ]]></dc:creator>
        <pubDate>Mon, 12 Mar 2018 08:17:06 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/03/photo-1514464750060-00e6e34c8b8c.jpeg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 創業者專訪#13：無懼運費補貼戰，Giftpack 打造有溫度的快遞服務 ]]></title>
        <description><![CDATA[ Giftpack 創立一年多來，已培養一群死忠顧客，目前服務跨足台美兩地，下階段將揮軍日本與新加坡等地，營運成長可期，也吸引多個投資機構前來敲門。 ]]></description>
        <link>https://www.appcoda.com.tw/giftpack-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b39e</guid>
        <category><![CDATA[ 專訪 ]]></category>
        <dc:creator><![CDATA[ 陳 奕先 ]]></dc:creator>
        <pubDate>Fri, 02 Mar 2018 07:15:23 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/04/--.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Flawless App 如何讓你成為一位更好的 UI 設計師及開發者 ]]></title>
        <description><![CDATA[ 編者的話： 我們非常喜歡 Flawless app。這個星期我們特別邀請 Flawless App 的創辦人 Ahmed Sulaiman 介紹一下這個應用程式，看看如何讓你的app 設計和開發流程做得更好。如你讀完此文章之後，也覺得Flawless App對你有幫助，由今天至3月5日，可透過此連結以優惠價（20% off）購買Flawless app。  即使到了 2018 年，我們仍然努力解決設計師與開發人員之間的互動問題。雖然每個團隊在設計及開發時有著不同的組織架構，但問題依舊存在。所以產品團隊仍然須指出如何改善設計-開發流程以及為使用者提供優質產品方面變得更有成效。  長期以來，我只身為其中一邊，我過去負責 Android、iOS、macOS 的開發。但在 2015 年的時候，事情有了巨大的變化：我開始學習設計而之後更負責我的公司‑Flawless App 的所有設計工作。  我們 Flawless App 的使命在於幫助 iOS 開發人員及設計師們改善 ]]></description>
        <link>https://www.appcoda.com.tw/flawless-app-demo/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b39d</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Tue, 27 Feb 2018 18:20:04 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/02/flawless-app.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ ARKit 教學：偵測水平面以及使用 SceneKit 添加 3D 物件 ]]></title>
        <description><![CDATA[ 擴增實境(Augmented Reality)有著前所未有的力量擴展我們的世界，讓我們與世界互動的方式不再一樣。隨著 iPhone X 的發表，這個世界已準備好擁抱 AR。而我們正在歷史的一刻，正在一個偉大的開端。AR 的潛力是無止盡的。  開始之前 本次教學建立在先前 ARKit 教學內容之上。如果你還沒有準備好，可以參考我們先前的教學內容。此外，如果可以的話，先為你的 App 找到一個平坦的地方就在好不過了。  我們將會學到什麼？ 在這次的教學中，我們專注在 ARKit 的水平面上。我們會先製作一個洋面(水平面)，然後放入一艘船在上面(3D 物件)。    或者用燈光建立一支大艦隊！    接下來，你會學到關於 ARKit 中的水平面知識。最後我希望在完成這次的教學後，你可以在你的 ARKit 專案中能順利的使用水平面。  什麼是水平面 所以當我們說到 ARKit 中的水平面時，這個水平面( ]]></description>
        <link>https://www.appcoda.com.tw/arkit-horizontal-plane/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b39c</guid>
        <category><![CDATA[ ARKit ]]></category>
        <dc:creator><![CDATA[ Jayven N ]]></dc:creator>
        <pubDate>Fri, 23 Feb 2018 18:00:09 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/02/arkit-ship-featured-1680x1046.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 《iOS 11 App 程式設計實戰心法》正式推出電子版 ]]></title>
        <description><![CDATA[ 一直有讀者問：「初學者那本Swift書會否推出電子書？」  今年推出的《iOS 11 App 程式設計實戰心法》，除了實體書外，我們現在正式推出電子版。內容和實體書沒有分別，主要是提供多一個選擇給大家。比起實體書，我們可以隨時更新電子版。也因為此，每本電子書我們都包含一年免費更新。    Swift 語言、Xcode和 iOS SDK 仍在不斷發展，很多當實體書推出的時候，蘋果公司已推出新版的Xcode。就以此書為例，開始寫書的時候，Xcode 仍是 9.0 版本。到實體書正式推出時，Xcode 已更新至 9.2。今次幸運地，所有程式碼都能正常執行，但有些情況，我們還是需要做些微的調節。實體書的話，我們會通知出版商博碩在網站張貼改動，而我們也會在自家開發者社群通知讀者，但始終沒可能推出更新版的實體書。電子書在這方面就沒有限制，我們可以直接改動檔案將書更新，並以電郵方式將新版寄給您。  說回這本書的內容，新書是專為Swift 4和Xcode 9而從新編寫的， ]]></description>
        <link>https://www.appcoda.com.tw/ios11-swift-ebook/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b39b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Thu, 08 Feb 2018 01:10:40 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/02/ios11-book-chinese-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ ARKit教學：學習如何在實境加入一個虛擬3D物件 ]]></title>
        <description><![CDATA[ 擁有一個很棒的視覺感受可以讓你的App有獨特的個化風格，在這個教學中，我們將會了解一個創造3D物件工具，與相關線上資源可以支援SceneKit格式的3D物件，最重要的是，學習如何使用SceneKit建立一個基本簡易的ARKit App。  事不宜遲，那我們先來試著在實境加入一些3D物件，我想應該會很有趣，我希望你將可以享受本篇教學，也感謝你分享本篇教學給予其他人了解。  當我們開始前，開發者還是需要一些基本知識，當然我們需要從之前的ARKit教學得到一些基礎知識，如果你是第一次碰觸ARKit，建議請先參考ARKit教學，來了解如何建立如何應用SceneKit來建立一個簡易的ARkit。  你將會學習到的功能 好的！我們將會一起學習到很多功能，以下項目將是本教學會教給你的，包含：  簡單介紹3D物件的工具與資源 如何實現一個單節點的3D物件 如何加入一個基本亮度 如何實現一個多節點的3D物件 如何建立或找到一個3D物件 要如何來建立或找到一個3D物件呢？請隨著腳步來看看我們如何建立或找到相關資源。  建立3D物件工具   首先，你可以使用某些3D物件建立工具，來幫助你從無到有，建立屬於你的3D模型，或是，你也可以使用這些工具組已有的3D模型，並能支援SceneKit的檔案格式，我們等會會遇到更多的有關SceneKit支援格式的問題，如果你有計畫建立屬於你自己的3D物件，你可以參考下列這些工具：  Blender SketchUp Autodesk 3ds Max 3D物件相關線上資源   除了建立你自己的3D物件外，你也許會使用一些需能立即選用或得付費的3D模型放在你的ARKit App中， ]]></description>
        <link>https://www.appcoda.com.tw/arkit-3d-object/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b39a</guid>
        <category><![CDATA[ ARKit ]]></category>
        <dc:creator><![CDATA[ Jayven N ]]></dc:creator>
        <pubDate>Sun, 04 Feb 2018 20:53:47 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/02/arkit-paperplane-light.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 讓藏書更有價值，Sparktake 打造書籍交易平台 ]]></title>
        <description><![CDATA[ 隨行動裝置普及，帶動電子書市場快速成長，多數人認為實體書的市場前景堪慮，但電子書與實體紙本仍屬兩個不同的媒介，因此，雖然電子書的崛起取代了部份實體書的需求，紙本閱讀的體驗對於部分的人來說仍不是電子屏幕能夠比擬的，因此，本次專訪介紹的新創團隊，就鎖定實體書線上交易需求，打造兩手書線上交流平台 Sparktake，提供更友善的書籍交流環境，盼為二手書創更多價值。    Sparktake由兩位共同創辦人Isaac與Sean所創立，他們是香港連續創業者，過去已經嘗試過3~4個創業題目，雖然最後都以失敗收場，但每次的經驗都讓他們離成功更近一些，本次打造二手書專屬交易平台，上架一個多月就衝破一萬個使用者，目前在雙平台已累計5~6萬個用戶，且每月的活躍用戶也達到一萬以上，接下來更計畫前進歐美市場插旗。  本次專訪邀請到Isaac分享他的創業路程，Isaac表示，過去與他的大學同學Sean嘗試過幾個創業主題，包含B2B的應用服務，剛開始都沒有想清楚客戶真正的需求，市場測試的工作做得不足，讓他們最初不斷碰釘子，兩人以工程角度設想的很多應用，真正到了客戶端卻沒能解決用戶的痛點，抑或是市場上早有類似的解決方案，以致用戶數遲遲無法達到足以獲利的甜蜜點，最終失敗收場。    在體驗過數次市場的給他們的震撼教育後，這回卻選擇了被多數人視為即將被電子書取代的實體書二手交易市場，Isaac表示，Sparktake就像是蝦皮或旋轉拍賣，但是專為書籍交易打造的，這個創業主題的發想，最初是因為自己有很多書想要轉手，但是把這些書放到線上交易平台卻是乏人問津，因為一般來說這些平台在書籍交易並不普及，商品流轉率過低讓多數人寧願走一趟二手書實體書店。  Sparktake上線首戰奏捷，單月下載人次近萬 ]]></description>
        <link>https://www.appcoda.com.tw/sparktake-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b399</guid>
        <category><![CDATA[ 創業 ]]></category>
        <dc:creator><![CDATA[ 陳 奕先 ]]></dc:creator>
        <pubDate>Mon, 08 Jan 2018 00:21:14 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2018/01/sparktake-2.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ ARKit 教學：如何搭配SceneKit來建立一個簡單的ARKit Demo ]]></title>
        <description><![CDATA[ 擴增實境(Argument Reality)來囉！記得寶可夢(Pokemon Go)嗎？它當然也是擴增實境的代表之一！Apple終於在iOS11將擴增實境帶進來，也因為iOS11，未來將會有數不清的iPhones和iPads就會搭載AR功能，這將會讓 ARKit成為世界最大的平台，是的，如果你對建置擴增實境的Apps有興趣，讓你就來對地方了。  目標 本教學主要會開發一個ARkit Demo App，並應用SceneKit來協助你熟悉基礎的ARKit。  是時候讓你開始沉浸在本篇教學內，並讓你了解如何一步一步建構出ARKit App，且透過你手上的裝置與AR世界互動。  本篇教學的想法主要是學習AR與利用API來建置一個APP，藉由教學的步驟，你將會一步步了解ARKit在實體裝置上是如何與神奇的3D物件來互動的。  在開始前，請了解本篇教學僅是以基礎功能應用為主。  你需要準備的 進入本篇教學前，建議你已有對iOS的基礎開發的能力，這屬於中階程度的教學，並且，我們將需要Xcode9以上的版本。  為了測試你的ARKit App，你得需要一個可兼容Apple的ARkit的裝置，建議有Apple A9處理器以上等級的裝置。  現在請確認你已具備上述需求，並準備開始進行，以下是我將會帶你走過：  建立一個新的ARKit apps專案 設定ARKit SceneKit View ]]></description>
        <link>https://www.appcoda.com.tw/arkit-introduction-scenekit/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b398</guid>
        <category><![CDATA[ ARKit ]]></category>
        <dc:creator><![CDATA[ Jayven N ]]></dc:creator>
        <pubDate>Mon, 01 Jan 2018 07:26:09 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/12/daniel-frank-379281.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ MVVMC 介紹：Runtastic 所使用的變形 MVVM 設計模式 ]]></title>
        <description><![CDATA[ 此文章轉載自Runtastic網誌，由Runtastic的工程師Adam Studenic授權翻譯及刋登。 在 Runtastic，我們完成了 38 個 iOS App，而我們的團隊也擴增到了 20 位 iOS Developer，同時我們的 iOS 程式庫包含了超過 700,000 行的程式碼。一個成長中的團隊帶來了程式庫的增長，也造成了程式碼之間的高複雜性及耦合性。而這樣會帶來災難性的結果，除非你關心整個程式架構以及在開發軟體時遵照一些開發原則，例如：  遵照單一功能原則(Follow the single responsibility principle) 可測試性的設計(Design for testability) 擁有明確的相依關係(Have clear dependencies) 讓程式碼保持可讀性及可維護性(Keep your code readable and maintainable) 雖然大部分程式都會從 Apple MVC ]]></description>
        <link>https://www.appcoda.com.tw/mvvmc-explained/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b397</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Mon, 18 Dec 2017 07:02:41 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/12/groups_overview_screen.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 聊天機器人教學：使用Dialogflow (API.AI)開發 iOS Chatbot App ]]></title>
        <description><![CDATA[ 隨著蘋果Core ML的最新版本發佈，開發人員更容易構建人工智能應用程式，除了圖像識別和文本檢測是利用AI建置APP的好例子，另一種善於展現機器學習Power的應用程式類型則是chatbots。在本教程中，我們將使用Google的Dialogflow（以前稱為API.AI）構建在iOS上運行的chatbot應用程式！  聽起來很酷吧！接下來開始進入本教程的重點。  Intents(意圖)和Entities(關鍵字)快速概覽 在開始之前，我先解釋Dialogflow和chatbots的一般基本知識。 在構建chatbots時，你必須知道兩個術語：Intents(意圖)和Entities(關鍵字)。    An entity represents a term or object in the user&#8217;s input that provides clarification or specific context for a particular intent.     (entity表示用戶輸入中的術語或對象，為intent提供說明或使用情境。 ]]></description>
        <link>https://www.appcoda.com.tw/chatbot-dialogflow-ios/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b396</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Mon, 04 Dec 2017 17:18:09 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/12/image-1.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何使用Xcode Configuration 管理 iOS Apps 不同構建版本 ]]></title>
        <description><![CDATA[ 在軟體專案的開發生命週期中，一般來說，會在不同的階段創建不同的版本。在初期階段，會有一個本地端的配置版本，即將進入下一個階段時，需要提供另一個版本讓QA團隊來測試功能和修復bugs，當應用程式通過所有測試並獲得QA團隊的認可後，在推送到App Store之前，會需要創建另一個版本，將其發送給客戶進行beta測試，一旦客戶對你發送的構建版本感到滿意，就算是production-ready的應用程式，而其中這些構建版本不完全相同，每一版都有一些特殊目的，配置都會略有不同。  例如，若應用程序需要串連後端，則應用程式很可能在QA測試期間連接到測試環境，該版本可能配置了一個測試URL，當進入到下一個階段後，另一個建置版本則需要一個用於連接到staging/production server的URL，最重要的是，當錯誤發生時，各個建置版本應該顯示不同層級的提示訊息。  如何在Xcode中有效率的管理所有構建版本，而且是在相同的code base上？這是我想在本教程中討論的內容，並向讀者展示如何在Xcode的幫助下創建多個配置。  如何管理多個構建版本？ 其實有多個方法可以實現它，其中一個是創建不同的targets，每個target使用不同的Info.plist，每選擇一個target，就會使用不同的Info.plist，因此可以藉此設置變數，如token或是不同版本的URL。  這也可以使用Bundle Identifiers來實現，定義不同的preprocessor macros控制各個代碼塊的編譯條件。  Eugene Trapeznikov已經在下列這個優秀的教程中介紹了這種方法，如果你還沒有看到， ]]></description>
        <link>https://www.appcoda.com.tw/xcconfig-guide/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b395</guid>
        <category><![CDATA[ Xcode ]]></category>
        <dc:creator><![CDATA[ Ziad Tamim ]]></dc:creator>
        <pubDate>Sun, 12 Nov 2017 07:39:25 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/11/aidan-hancock-338905.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 創業者專訪#11：擘畫交通共享藍圖，WeMo Scooter吸海外業者搶親 ]]></title>
        <description><![CDATA[ 近年共享概念大行其道，根據PwC（資誠聯合會計師事務所）及德盛安聯預估，全球共享經濟（Sharing Economy）產值，預計至2025年將可衝破3,350億美元，隨物聯網應用逐步發酵，也讓共享經濟得以發展為制度化的商業模式，國內近年更有業者推出無站點式共享智慧電動機車租賃，盼顛覆台北未來交通藍圖，一年多的時間就讓海外業者捨近求遠前來取經，順利搶得交通共享市場的「灘頭堡」，本次專訪就邀請到威摩科技WeMo Scooter技術長鄭捷來分享這段創業甘苦談。  根據調查資料顯示，國人最常使用的交通工具就是機車，占比達到36%，但捷運加上公車也僅達到34%，顯示大眾對於機車的依賴程度高，鄭捷表示，儘管機車是通勤者最常使用的交通工具，但其實每台機車的閒置時間很大，平均利用率僅有3.27%，因此，WeMo團隊認為這塊市場很適合做共享經濟，考量電動機車對空氣環境影響較小，綠科技將是未來趨勢，因此切入經營電動車租賃市場。    編織交通網絡，千車目標達陣 WeMo運營車輛已從今年中的兩百部車，快速躍升至六百多部，年初所喊的千車上路目標，可望在11月達成，目前提供服務的地區集中在台北市，期盼盡快提升服務密度，鄭捷說，目前營運車輛仍未能達到規模經濟，尚無法組織出一個交通網絡，團隊規劃下個目標是希望將運營車輛衝到五千部，遠期目標設為一萬部，這樣才能有效編織出一個扎實的交通網絡。  WeMo客戶群集中在24~45歲之間， ]]></description>
        <link>https://www.appcoda.com.tw/wemo-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b394</guid>
        <category><![CDATA[ 創業 ]]></category>
        <dc:creator><![CDATA[ 陳 奕先 ]]></dc:creator>
        <pubDate>Tue, 31 Oct 2017 06:48:57 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/10/wemo-2.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ macOS程式開發入門：學習用Swift開發一個圖片上傳的APP應用程式 ]]></title>
        <description><![CDATA[ 你想要開始學習如何開發你自己的masOS應用程式，然後你可以驕傲的使用屬於你的程式在你自己的Macbook上，或是你有著滿腹的熱情開始學習程式開發在你的Mac上？那你可以來對了地方了！這兒，我將會帶你一步一步開發屬於你的Mac OS App開發，並用目前最新的語言，Swift！ ]]></description>
        <link>https://www.appcoda.com.tw/macos-image-uploader-app/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b393</guid>
        <category><![CDATA[ macOS ]]></category>
        <dc:creator><![CDATA[ Lawrence Tan ]]></dc:creator>
        <pubDate>Fri, 27 Oct 2017 17:41:09 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/10/tetsuya-tomomatsu-306592.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 初探 ReplayKit：製作一個簡易螢幕錄製 App ]]></title>
        <description><![CDATA[ 誰不愛在自己的 iPhone 上玩遊戲呢？我想我的朋友及家人會同意我花太多的時間在手機上玩遊戲。然而，最能夠表現出 iPhone 強大能力的東西之一就是這些聲光效果十足的遊戲了。  幾乎所有喜愛在 iPhone 上玩遊戲的人們都很喜歡向他們的朋友炫耀這些遊戲是多麽的好。而這就是為什麼 Apple 會在 WWDC 15 上發表 iOS 9 時，同時公布  ReplayKit 這支 API。 ReplayKit 是一支令人驚豔的 API，它可以讓開發者們以非常簡單的方式將螢幕錄製功能整合進 App 中。只要按下一個按鈕，玩家們就可以錄製遊戲畫面然後即時地分享給朋友們。先別急，我知道 iOS 11 新增了螢幕錄製功能讓你隨時隨地錄製螢幕畫面，但對玩家們來說使用上並不直覺，因為它需要開啟控制中心且要離開遊戲來編輯及傳送影片。而 ReplayKit 是專為玩家們所設計的 API。  在本次的教學中，我將會示範如何製作一個簡易螢幕錄製 App。這個 App 將會有一顆按鈕控制開始及停止錄製、一個 ]]></description>
        <link>https://www.appcoda.com.tw/replaykit/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b392</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Mitchell Sweet ]]></dc:creator>
        <pubDate>Fri, 13 Oct 2017 20:07:56 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/10/andreas-palmer-284310.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 進階開發指南：如何使用Quick、Nimble執行測試驅動開發（TDD） ]]></title>
        <description><![CDATA[ 在mobile app專案上寫任何類型的測試都不是一個受歡迎的選擇，事實上，多數mobile應用開發團隊都盡可能省略寫測試的工作，希望藉此節省時間以加速開發時程。  身為一位「成熟」的開發者，我深刻體驗了寫測試帶來的好處，不僅確保應用程式內的功能按預期運行，還可以「lock」你的程式碼，以防止其他開發人員更改代碼，測試和程式碼之間的這種耦合可以幫助新開發人員輕鬆onboard或接管專案。  Test-driven Development Test-Driven Development (TDD) 就像是一個寫code的新藝術。它遵循以下循環：  先寫一個會fail的測試 補上程式碼讓它通過測試 Refactor（重構） 重複以上動作至滿意為止 這邊提供給讀者一個簡單的例子，請參考以下實作範例：  func calculateAreaOfSquare(w: Int, h: Int) -> Double { } Test 1:  給定w=2、h=2，預期輸出結果會是4，在上面的程式碼當中，這個測試結果會是fail，因為我們還沒實作裡面的內容。  接著，我們添加一些程式碼：  func ]]></description>
        <link>https://www.appcoda.com.tw/tdd-quick-nimble/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b391</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Lawrence Tan ]]></dc:creator>
        <pubDate>Tue, 03 Oct 2017 23:26:14 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/10/mia-baker-322586.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Google Map SDK 實作：如何把Google街景嵌入到你的 iOS App ]]></title>
        <description><![CDATA[ 你是否曾有遇過不知怎麼和你客戶說要如何到你的公司，尤其是當你公司位處郊區鄉間小弄間的話，你可能只能用電話和你客戶解釋如何到你公司以外，現在有個好方式能幫你，就是利用Google街景視角(Google Street View)。  Google街景視角Google Street View &#8211; 它應用全景技術擷取街道實景，並在世界各地建置。這是Google在Google Maps上所實現的一個延伸功能，並能讓開發者經由專屬的SDK做相關應用，當然，你也可以整合街景視角做為App的功能特色之一。  當用在不同的應用領域時，你會發現這個功能非常的好用，這有幾個例子做參考：  旅遊用途 &#8211; 明顯，因為有很多旅館是藏身在郊區。 運動與健身 &#8211; 可以實景呈現或動畫呈現路跑的路線。 電子商務與餐點外送 &#8211; 可以協助快遞員穿梭城市。 當然應還有其他例子，例如我們在GBKSOFT看它應用街景功能在專為金融交易員與財金顧問的App上，因此，我們也將我們這方面的經驗分享給你！我們將針對下列主題來做這次的教學：  Google Maps的整合； 如何和Google Street View協作 在需要的物件上設定相機的位置； 測試Google Street View   本篇教學是以Swift語法為主，並在Xcode 9上測試   設定專案 ]]></description>
        <link>https://www.appcoda.com.tw/google-street-view-ios/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b390</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Sun, 24 Sep 2017 21:32:37 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/09/hans-m-62126.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Core ML Tools初學者指南：如何將Caffe模型轉換為Core ML格式 ]]></title>
        <description><![CDATA[ 歡迎來到Core ML教程系列的第二部分。在本教程中，將學習如何設置Python虛擬環境，獲取不在Core ML格式裡的數據模型，並將該模型轉換為Core ML格式，最後將其集成到應用程式中。強烈建議讀者先閱讀上一個教程，然後再繼續閱讀本篇文章。  在這個專案中，我們將構建一個花的識別應用程式，就如同下圖所示。然而，主要的重點是告訴你如何獲得一個訓練有素的模型，並將其轉換為Core ML格式，以供iOS應用程式開發。    注意:開發者需要使用Xcode 9才能完成以下教程，並且需要運行在iOS 11的設備，才能測試本教程的一些功能。最重要的是，所有的程式碼都用Swift 4和Python 2.7編寫。 在我們開始前&#8230; 本教程的目的是幫助讀者了解如何將各類型的數據模型轉換為Core ML格式。不過，在開始之前，我應該給你一些機器學習框架的背景知識。現在有許多流行的deep learning框架，為開發者提供工具去設計、構建和訓練自己的模型。我們要使用的模型來自Caffe。Caffe由Bekerley人工智能研究（BAIR）開發，它是創建機器學習模型最常用的框架之一。  除了Caffe之外，還有許多其他框架，例如Keras，TensorFlow和Scikit-learn。 ]]></description>
        <link>https://www.appcoda.com.tw/core-ml-tools-conversion/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b38f</guid>
        <category><![CDATA[ AI ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Thu, 14 Sep 2017 19:48:38 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/09/shttefan-284259.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 行動支付開發：如何結合 Braintree 在應用程式支援信用卡付款 ]]></title>
        <description><![CDATA[ 現在越來越多的人偏好使用移動裝置上網，而非傳統的固定設備，當他們在滑手機時，也代表正在使用應用程式。事實上，人們花費約85％的時間在使用手機上的應用程式，意味著每一天都有越來越多的人在手機上使用APP來上網和購物，當你在設計iOS應用程序時，需要計畫如何捕獲這些客戶並藉此讓你的品牌獲利。  在本教程中，將學習如何使用Braintree服務，讓你在iOS中接受使用信用卡處理應用程序式中的購買需求。對於要求App內購買(In-App Purchases, IAP)的人，你需要使用IAP來銷售數位內容，例如遊戲的服務分級，以及應用程式內的加值內容(bonus content)，而對於像服裝這類的實體商品，可以使用其他支付解決方案，例如Braintree或Stripe。  什麼是Braintree? Braintree是PayPal收購的付款服務提供商，它強調「簡單且強大的付款方式」，並提供drop-in payment UI和多種編程語言的函式庫等支持，讓開發者可以輕鬆整合。可以通過信用卡、PayPal、Venmo和Apple Pay接受付款，這將會是一個堅實的服務。  Braintree與Stripe在市場中競爭著知名的企業客戶。Stripe有Lyft，Braintree有Uber，Stripe有Kickstarter，Braintree有AirBnB，Braintree能有如此的競爭力，靠的是提供能輕鬆整合的服務，多個可用的支付選項（如Bitcoin和Apple Pay）以及它們的快速單鍵結帳選項。 ]]></description>
        <link>https://www.appcoda.com.tw/braintree-ios-integration/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b38e</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Ziad Tamim ]]></dc:creator>
        <pubDate>Mon, 11 Sep 2017 23:41:01 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/09/braintree-payment.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 模仿 Apple 教學範例，寫出一手好 Swift ]]></title>
        <description><![CDATA[ 此文是彼得潘研究 Apple 教科書後，小小整理的一些重點。若能模仿以下做法開發 iOS App，應該就能寫出長得很像 Apple 範例的程式，讓人更容易理解修改。當你有一天被高薪挖角，準備離開原公司時，也能安心地交接程式，不再怕新人看不懂而日夜糾纏。 ]]></description>
        <link>https://www.appcoda.com.tw/write-better-swift/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b38d</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ 彼得潘 ]]></dc:creator>
        <pubDate>Tue, 05 Sep 2017 20:09:22 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/09/oliver-thomas-klein-207908.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 創業者專訪：打造獨立音樂平台，Bump嗨進撒野音樂祭 ]]></title>
        <description><![CDATA[ 科技產業飛快演進，軟體產業需要更大的開發能量，國內大學教育過去偏重在硬體，使近年軟體業人才缺口擴大，根據人力銀行調查，去年軟體業人力缺口已超越硬體，且增幅居科技業之冠，也讓過去幾年程式教學機構如雨後春筍般遍地開花，本次專訪對象則是從好想工作室培育計畫出來的團隊Bump，致力打造更便捷的獨立音樂交流平台，近期更前進台南撒野音樂祭，成為官方指定APP。  Bump 由Hubbie、Ray、Boshi、Jerry四位團員組成，希望以科技的力量，提供獨立音樂圈更便捷的服務，它們是好想工作室培育計畫孕育的團隊，好想工作室原先單純只是co-working space，但是感嘆台南的資訊領域和資訊圈進展太過緩慢，又不像北部有那麼多技術社群可以共同勉勵成長，因此希望能夠透過這樣的培育計畫，讓台南的軟體社群更活絡，也期盼學員未來有機會成為一起打拼的夥伴。    好想工作室培育計畫不需要任何費用，學員也不限定科系背景，但需要學員有決心投入大量學習時間，培育計畫主要培養學員的自學能力，不會訂定每天的進度課程，僅提供一個mentor角色，但是在開發遇到任何難題，都只能透過團體討論或是透過線上資源尋找解答。  闖關Opendata競賽，加速驗證商業模式 為培養實戰經驗，好想工作室也鼓勵學員參加Opendata比賽，這個比賽分為四個階段，第一階段為書面送審，第二階段為(Minimum Viable Product；最小可行產品)的Presentation，第三階段是商業化驗證，最後一個階段則為公開Pitch，總獎金255萬元由各團隊依據產品或服務商業化募資發表情況做分配， ]]></description>
        <link>https://www.appcoda.com.tw/bump-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b38c</guid>
        <category><![CDATA[ 專訪 ]]></category>
        <dc:creator><![CDATA[ 陳 奕先 ]]></dc:creator>
        <pubDate>Fri, 25 Aug 2017 21:53:48 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/08/bump-team.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Chatbot 開發指南：使用 LINE Bot PHP SDK 打造問答型聊天機器人 ]]></title>
        <description><![CDATA[ 根據尼爾森媒體（ Nielsen ）的調查， 12-65 歲的台灣⺠眾（這個年齡層幾乎涵蓋了所有的上網民眾），有將近 91％ ，也就是將近  1,700 萬⼈都在使用 LINE 。換句話說，請人家掃描 QR Code 把你的服務加為好友，會比請人家安裝一個 App 來得容易，而且上手時間也比較短，因為操作介面是原本就熟悉的通訊軟體 LINE 。以往人們上網的第一件事，就是打開瀏覽器，用 Google 搜尋資料，未來很可能是打開通訊軟體，然後對著機器人聊天查詢資料。  想像一下，把 LINE@ 帳號背後的真人小編用機器人程式取代之後，會發生什麼事呢？可以確定的是，如果機器人能夠分擔部分工作，那麼真人將能夠把時間挪用去做更有生產力的事情。至於是哪些工作呢？一般而言，聊天機器人可以粗略分成兩類：任務型（ Task-Oriented ）和閒聊型（ Chit-Chat ）。前者有點像操作 ATM ]]></description>
        <link>https://www.appcoda.com.tw/line-chatbot-sdk/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b38b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 陳 佳新 ]]></dc:creator>
        <pubDate>Fri, 18 Aug 2017 01:23:59 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/08/line-chatbot-featured-1.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 程式庫系列之六：TLPhotoPicker, Cluster, YNSearch, InteractiveSideMenu 以及 CryptoSwift ]]></title>
        <description><![CDATA[ 各位 iOS 開發者們，不曉得這幾篇以來的程式庫如何呢？希望我們所介紹的程式庫能對你有所幫助。這週也將繼續介紹我們所挑選的幾個 Swift 程式庫，希望能幫助你在 iOS App 開發的道路上，繼續前進。  提示：你可以使用CocoaPods安裝這些程式庫到你的Xcode項目，如不懂使用CocoaPods，可以參考這篇教學文章。 1. TLPhotoPicker   讓使用者在相簿中選取照片或影片是蠻常見到的 App 功能，要完成這樣的功能我們可以使用原生的 UIImagePicker 或者自行撰寫。而使用第三方程式庫也是個不錯的選擇，例如這套 TLPhotoPicker。 TLPhotoPicker 讓開發者可以快速的製作出一個介面不錯的相片選取器讓使用者選取在裝置中的相片或影片。  在安裝完之後，我們首先要在 info.plist 裡添加詢問使用者是否可以使用相簿及相機的權限    接著引入程式庫並讓類別繼承 delegate  import TLPhotoPicker class ViewController: UIViewController,TLPhotosPickerViewControllerDelegate{} 然後我們將 TLPhotoPicker 初始化並設定 delegate 的指向為 ViewController，並將畫面呈現： ]]></description>
        <link>https://www.appcoda.com.tw/swift-library-6/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b38a</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ 楊 敦凱 ]]></dc:creator>
        <pubDate>Fri, 11 Aug 2017 02:02:49 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/08/volkan-olmez-73767.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 提升 iOS 開發效率！ Xcode 9 內置模擬器的新功能與技巧 ]]></title>
        <description><![CDATA[ iOS模擬器是任何iOS應用程式開發過程中不可或缺、無法被忽視的一個部分。來自Xcode 9的新模擬器帶來了很多有用的技巧，能夠提升你的開發效率。蘋果回憶歷代模擬器的演變！相較於以前適度的更新相比，這回似乎算是一次很重大的變更。  所以讓我們開始這篇教程的重點吧，本文會列出我在新iOS模擬器中找到的所有功能（一些技巧也可以在舊的模擬器中使用）。  1. 在全屏模式下使用Xcode模擬器 當你使用13吋屏幕時，Xcode的全屏模式是唯一救星，以前不能在全屏模式下使用Xcode模擬器，但現在開始可以使用了#xf60e;    從Xcode 9 beta 3開始，這個功能將會是系統預設的，所以你不需要做任何事情來啟用它。  更新：可能某些人預設情況下是關閉此功能的，但不用擔心，可以隨時通過Apple Internal選單啟用此功能。如果想在新的模擬器中探索更多的秘密功能，可以啟用Apple隱藏的內部選單。   為此，你需要在根目錄中創建一個名為“AppleInternal”的空文件夾，請執行下面的指令並重新啟動模擬器：  sudo mkdir /AppleInternal 新的選單項目應該會顯示出來 ☝️  注意：我是從Xcode 9b3的模擬器上測試這個步驟，如果你還沒有下載，請在此安裝最新的Xcode。 2. 一次打開多個模擬器 你還記得在不同的模擬器上測試應用程序的挫敗感嗎？以前，你被迫一次只能打開一個模擬器， ]]></description>
        <link>https://www.appcoda.com.tw/ios-simulator-tips-tricks/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b389</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Fri, 04 Aug 2017 18:11:52 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/08/xcode9-ios-simulator.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Apple ResearchKit 程式開發新手入門教學 ]]></title>
        <description><![CDATA[ 某些醫學相關研究通常會需要受測者填寫問卷回答相關問題，目前也會應用一些電子化的感測方式更容易了解受測者的生活習慣，但這些受測試驗每天都得進行的話，會一件枯燥乏味的事情。那麼，現在有沒有更好更簡易的方式來執行某些醫學研究呢？  現在，讓我們歡迎ResearchKit。  ResearchKit功能就像是它的名字一樣，是做為研究(Research)應用的。Apple將ResearchKit設定為開放原始碼，其目的就是給予相關開發者能建立醫學研究應用程式開發，並設計可讓患者參與，在患者們參與開發者所設計的醫學研究中，ResearchKit的框架(Framework)元素可協助開發者來開發臨床研究用的程式開發。  若設計的程式加入ResearchKit，不論參與者是從世界哪個角落，皆可對研究提供一定的幫助，所以現在市面上已有一些APP可以協助研究人員了解對如哮喘、帕金斯症、乳癌和糖尿病等醫學病症研究。ResearchKit提供了應對的框架，將收集相關的數據資料傳至你的伺服器上，你需自行管理它，不僅如此，ResearchKit和Apple的另一套HealthKit框架可共同協作(work seamlessly)，所以可以輕鬆的從HealthKit得到如步數和心率等資訊。  ResearchKit主要提供三個模組：  同意(Consent) &#8211; 提供一簡易機制詢問參與者的意願。 調查(Survey) &#8211; 提供受測者回答所設定之問題 活動任務(Active Task) &#8211; 為了研究需求，建置一個讓受測者執行的特定活動(如手指觸碰螢幕) 在本篇教學中， ]]></description>
        <link>https://www.appcoda.com.tw/researchkit/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b388</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Surabhi Chopada ]]></dc:creator>
        <pubDate>Fri, 28 Jul 2017 18:46:02 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/07/researchkit-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 初試 iOS 11 新框架：Vision Framework 讓文字偵測變得更容易 ]]></title>
        <description><![CDATA[ 在今年的 WWDC 中，Apple 釋出了許多新框架（frameworks），Vision Framework 便是其中一個。藉由 Vision Framework ，你不需要高深的知識就可以很容易地在你的 App 中實作出電腦視覺技術(Vision Techniques)！Vision Framework 可以讓你的 App 執行許多強大的功能，例如識別人臉範圍及臉部特徵（微笑、皺眉、左眼眉毛等等）、條碼偵測、分類出圖像中的場景、物件偵測及追蹤以及視距偵測。  或許那些已經使用 Swift 開發程式一段時間的人會想知道既然已經有了Core Image 及 AVFoundation，為什麼還要推出 Vision 呢？如果我們看一下這張在 WWDC 演講中出現的表格，我們可以看到 Vision 的準確度(Accuracy)是最好的，同時也支援較多的平台。不過 Vision 需要較多的處理時間以及電源消耗。 ]]></description>
        <link>https://www.appcoda.com.tw/vision-framework-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b387</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Thu, 20 Jul 2017 23:32:44 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/07/text-detection-demo-1.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ WAPOS談創業、談 iPad POS：艱苦替我建立難以跨越的高牆 ]]></title>
        <description><![CDATA[ 跨入行動世代，造就近年國內產業向上升級，POS（Point of Sale;端點銷售系統）市場過去也經歷一場重大變革，智能POS能夠方便的與收銀系統、管理系統、會員系統串連，加上較便宜的建置成本，衝擊傳統POS原本把持的市場版圖，近年多家新創團隊紛紛瞄準這波機會，積極切入智能POS應用，搶啖這塊市場大餅，本次專訪團隊為經營服飾零售端點銷售系統公司WAPOS。 ]]></description>
        <link>https://www.appcoda.com.tw/wapos-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b386</guid>
        <category><![CDATA[ 創業 ]]></category>
        <dc:creator><![CDATA[ 陳 奕先 ]]></dc:creator>
        <pubDate>Wed, 19 Jul 2017 21:52:32 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/04/-----.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 開發者指南：透過 Swift 重新認識Accelerate Framework ]]></title>
        <description><![CDATA[ iOS SDK中隱藏的幾個沒有被充分利用和不太受歡迎的框架，但其中有一些可以是相當實用且省時的工具，Accelerate Framework就是其中一個，它可用於Swift和Obj-C，Accelerate Framework讓開發人員在大規模的數學和圖像計算工作上更容易，優化任務處理的性能，因此，它廣泛應用於機器學習的領域。該框架包含用於向量和矩陣數學、數位信號處理、大量處理和圖像處理的各種C API。如果這聽起來很複雜，別擔心。你不需要知道很多數學，只要你明白這些概念。  Credit:以下文章是由Jeff Biggus開發程式碼的相關評論，讀者可以參考原始的GitHub連結。 首先，我們來到Xcode並創建一個新的playground，可以命名為任何你想要的名稱，並將平台設置為macOS，創建playground之後，請選擇所有內容並將其刪除，這樣就可以有一個乾淨的工作，在這個playground頂部請輸入以下內容來import下列這些函式庫。  import Cocoa import Accelerate import simd 現在我們準備開始用Accelerate框架編寫程式碼了！    BLAS（Basic Linear Algebra Subroutines：基本線性代數子程序） &lt;在第一個例子中，我們將討論如何解決一個常見的線性代數方程式：  Ax + y 其中& ]]></description>
        <link>https://www.appcoda.com.tw/accelerate-framework/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b385</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Wed, 12 Jul 2017 07:00:44 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/07/macbook-accelerate.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 4 新功能詳盡介紹：Codable, Dictionaries優化, 多行字符串等等 ]]></title>
        <description><![CDATA[ 在幾週前的WWDC大會中，Apple公佈Swift 4，它伴隨新版Xcode 9一同現身，它的最終發布日將會是在九月，這個夏季期間仍是beta版本，這是該語言首次可以向下兼容的版本，它為現有的Swift 3功能提供很棒的優化，其中，很多都是開發者非常期待的，讀者將在本文中了解所有內容，所以廢話不多說，讓我們開始進入重點吧！:)  在本文中，我們假設你已經有Swift 3的一些基本知識。如果讀者需要快速了解的Swift 3和Swift 3.1最大亮點和更新重點，請查看我整理出Swift 3和Swift 3.1新特性的介紹文章。  我將使用Playground帶領讀者一起暸解本次程式碼的變更，如果你想充分了解Swift 4的新功能/更改，建議打開Xcode 9 beta版並創建一個新的Playground文件。 本文中的一些示例需要使用Foundation框架才能正常作業，因此，如果你想在Playground中操作本文介紹的所有內容，請先import這個框架之後再開始：  import Foundation JSON的編碼(Encoding)和解碼(Decoding) 讓我開始介紹一下Swift新版本一個很酷的功能。Swift 4簡化了Swift 3中使用的整個JSON壓縮和序列化過程。現在你只需要使自定義類型實現Codable協定 &#8211; 它會將Encodable和Decodable兩者結合 ]]></description>
        <link>https://www.appcoda.com.tw/swift4-changes/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b384</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Cosmin Pupăză ]]></dc:creator>
        <pubDate>Fri, 07 Jul 2017 07:19:29 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/07/swift4.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 iOS App 中進行自然語言處理：初探 NSLinguisticTagger ]]></title>
        <description><![CDATA[ 此文章轉載自作者網誌「QCLog」，由作者Qing-Cheng Li授權轉載。Qing-Cheng Li 為自然語言處理實驗室畢業的研究生、目前專職撰寫原生行動應用程式的軟體工程師。本文會詳細講解 NSLinguisticTagger以及如何在 iOS 應用程式裡進行自然語言處理。另外，本文所有圖片來源自WWDC的影片。 作為一位自然語言處理實驗室畢業的研究生、目前專職撰寫原生行動應用程式的軟體工程師，今年 Apple 的 WWDC 有一項議程特別引起我的注意：「自然語言處理與你的應用程式」（Natural Language Processing and your Apps）。我的所學（講的好像我真的會自然語言處理一樣）跟我的工作（講的一副我真的會寫 App 的樣子）終於產生連結了嗎？  所以趁著公司被賣掉的週末就把影片開來配飯吃，順便試著玩玩看這次新開放（這我倒是不太確定了，從文件來看部分 APIs 早在今年才要推出的 iOS 11 之前就已經支援）的自然語言處理 APIs，加減練習一下我越看越覺得好看的 Swift。  自然語言處理流程 這段 ]]></description>
        <link>https://www.appcoda.com.tw/nslinguistictagger/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b383</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ AppCoda 編輯團隊 ]]></dc:creator>
        <pubDate>Tue, 27 Jun 2017 19:04:14 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/06/nlp-wwdc.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 初探 Core ML：學習建立一個圖像識別 App ]]></title>
        <description><![CDATA[ 在 WWDC 2017 中，Apple 發表了許多令開發者們為之振奮的新框架（Framework） 及 API 。而在這之中，最引人注目的莫過於 Core ML 了。藉由 Core ML，你可以為你的 App 添增機器學習(Machine Learning)的能力。而最棒的是你不需要深入的了解關於神經網絡(Neural Network)以及機器學習(Machine Learning)的相關知識。接下來我們將會使用 Apple 開發者網站上提供的 Core ML 模型來製作範例 App。話不多說，Let’s Start To Learn Core ML！  註: 接下來的教學會使用 Xcode 9 beta ]]></description>
        <link>https://www.appcoda.com.tw/coreml-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b382</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Sai Kambampati ]]></dc:creator>
        <pubDate>Mon, 19 Jun 2017 08:27:05 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/06/core-ml-framework-1.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS開發者專訪 #8：佈滿荊棘的掏金夢，AppWorkout的創業告白 ]]></title>
        <description><![CDATA[ 台灣薪水長期停滯，國人薪資購買力水準歷經16年未成長，儘管低薪導致人才外流，但是另一方面也掀起一股創業潮，由於創業的機會成本相對低，近年國內竄起許多新創公司，以及亞洲指標性創業加速器 AppWorks Accelerator，本次專訪對象為專注於運動相關的新創公司AppWorkout共同創辦人陳文凱，他負責團隊iOS開發工作，該團隊則是 AppWorks 第8期結業的新創團隊，AppWorkout歷經過多次創業低潮，仍持續在創業路上堅毅的奮鬥著，期盼用科技提升民眾的運動體驗。  創業首要難題，決定共識主題   陳文凱過去唸的是資工，在創業之前是在Richi(里斯特)負責Mobile APP的開發工作，當時負責點數交換應用的開發工作，而當時公司經歷了一次人事調整後，他與公司的幾位同事決定出來一起創業，而決定創業題目成為了他們的第一個難題，因為大家在網路圈各自有不同的專案經歷，包含：電商、數位學習、社群媒體、餐飲、動漫遊戲等範圍，卻反而在初期很難找到一個大家都熟悉且專精的創業題目，陷入一種鼯鼠五技而窮的情況。  陳文凱表示，後續團隊換過好幾個創業主題，最原先是考量前共同創辦人王彥博有遊戲背景和網路公司工作經驗，且當時團隊已經透過side project的方式接觸過一些小遊戲，所以起初是先朝做遊戲的方向前進，但發現彼此對遊戲的喜好南轅北轍，所以之後在創業路上有轉過好幾次彎，陸續做過數位學習、雲端口譯、農業電商，也想過要做類似快取寶之類的服務，但是都因為無法在該領域築起技術門檻， ]]></description>
        <link>https://www.appcoda.com.tw/appworkout-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b381</guid>
        <category><![CDATA[ 創業 ]]></category>
        <dc:creator><![CDATA[ 陳 奕先 ]]></dc:creator>
        <pubDate>Thu, 15 Jun 2017 08:52:19 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/06/AppWorkout-2.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 不可能不愛的 Xcode 9：最新功能詳盡介紹 ]]></title>
        <description><![CDATA[ WWDC17 帶來許多令人興奮的好消息，iOS 11， Swift 4 和 Xcode 9，每個都有非常大的進步。但對 App 開發者來說，馬上可以派上用場的莫過於 Xcode，畢竟我們開發的 App，可能不需要 iOS 11 的 AR 和 machine learning 功能，程式碼也不見得會用到 Swift 4 的功能。因此，接下來的時間，我們就把時間交給 Xcode 9，看它大顯神威吧。  如何下載 Xcode 9 beta 你可連到 Xcode 9 beta 的下載頁面下載。 注意，只有付給 Apple 年費的尊貴開發者才能看到 beta ]]></description>
        <link>https://www.appcoda.com.tw/xcode9/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b380</guid>
        <category><![CDATA[ WWDC ]]></category>
        <dc:creator><![CDATA[ 彼得潘 ]]></dc:creator>
        <pubDate>Fri, 09 Jun 2017 21:38:38 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/06/xcode9-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 程式庫系列之五：PageMenu, ImagePicker, SwipeCellKit, Lottie 以及 SQLite.swift ]]></title>
        <description><![CDATA[ 各位 iOS 開發者們，不曉得這幾篇以來的程式庫如何呢？希望我們所介紹的程式庫能對你有所幫助。這週也將繼續介紹我們所挑選的幾個 Swift 程式庫，希望能幫助你在 iOS App 開發的道路上，順順向前。  提示：你可以使用CocoaPods安裝這些程式庫到你的Xcode項目，如不懂使用CocoaPods，可以參考這篇教學文章。 1. PageMenu   PageMenu 是一個關於切換頁面的程式庫。我們有時會看到像 Youtube 或是 Line 的分類按鈕一樣，按下按鈕後搭配按鈕上的變化同時左移或右移切換畫面這樣的動畫，而 PageMenu 可以簡易的幫助我們達到這樣的效果。  在安裝好之後：  import PageMenu 接著再定義變數：  var pageMenu : CAPSPageMenu? 然後建立我們要放進這個 Menu 裡的 ViewController 們：  var controllerArray : [UIViewController] = []          let controller1 : UIViewController = UIViewController() controller1. ]]></description>
        <link>https://www.appcoda.com.tw/swift-library-5/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b37f</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 楊 敦凱 ]]></dc:creator>
        <pubDate>Thu, 01 Jun 2017 19:01:06 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/06/swift-library-5.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift開發指南：Protocols與Protocol Extensions的使用心法 ]]></title>
        <description><![CDATA[ 歡迎來到Swift的protocols(協定)和protocols導向的編程教程，在本文中，我們將討論什麼是protocols，以及如何使用它們達到POP(protocol oriented programming:協定導向編程)開發。  我們將首先解釋什麼是protocol，關注protocol和class/structures之間的關鍵差異。接下來，我們將透過範例比較使用協定和類別繼承的差異，展示每種方法的優缺點。之後，我們將討論抽象化(abstraction)和多型(polymorphism)，這些物件導向和協定導向編程中的重要概念。然後討論協定擴展(protocol extensions)，這是Swift的一個特性，允許開發者替protocols提供預設值和擴增實作，最後，探討如何將OOP搭配POP來解決編程中的各種問題。  注意：本教程預設讀者具有Swift編程語言的基礎知識，不會侷限iOS，macOS或watchOS這些平台，相反的，文章中將專注於Swift，教你可以在任何環境中使用的Swift技能。然而，在開始前確實掌握Swift基本概念是很重要的，接下來，一起進入本文重點吧！ 編者提醒：如果您剛接觸iOS編程和Swift，請參閱我們的Swift入門指南。 什麼是Protocol? 如果讀者對protocols還是相當陌生，你的第一個問題最可能會想問protocol到底是什麼？  A protocol defines ]]></description>
        <link>https://www.appcoda.com.tw/swift-protocol/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b37e</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Pranjal Satija ]]></dc:creator>
        <pubDate>Mon, 29 May 2017 08:05:31 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/05/protocol-beginner.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 《iOS 10 App程式設計進階攻略：39個必學的開發技巧》正式推出 ]]></title>
        <description><![CDATA[ 不時也有人問何時才會推出Intermediate iOS 10 Programming with Swift 的中文版進階書。現在終於可以給你一個確實的答案，今天我們正式推出《iOS 10 App程式設計進階攻略：39個必學的開發技巧》一書。  比較特別的是今次是首次以電子書形式推出中文版。  可能你第一時間會想到：    還有兩個星期蘋果就會在WWDC公布新版的Swift，現在才推出iOS 10的書是不是遲了一點？幾個月之後又會推出新版的Xcode，內容會不會不適用？   我也試過買了一本程式實體書之後，內容很快就發覺不太適用。這也是其中一個此書以電子書形式推出的原因，在你購入書的首年內，你可以免費獲取更新版，我們會確保所有內容和程式碼都可支援最新版的Swift以及Xcode。換句話說，在購買後的一年內你會不時免費收到此書的更新版，而當蘋果正式推出Swift 4以及Xcode 9時，我們亦會為此書更新，確保所有內容也與新版本相容。  我非常喜歡實體書，但要做到免費更新，此書只可以以電子書形式推出。我們會提供三種電子書格式以供選擇：PDF、ePub和HTML，你可以選擇自己喜歡的格式在iPad或Mac（Windows也可）閲讀此書。想更了解此書的內容和何謂HTML格式，你可以先看看網上版，當中AdMob和QRCode的章節都是免費試讀。  另外，我們也有PDF 版的試閲書，下載方法可在這裡找到。 ]]></description>
        <link>https://www.appcoda.com.tw/intermediate-swift-book-announced/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b37d</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Fri, 26 May 2017 09:28:16 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/05/intermediate-swift-books.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ AdMob詳細教學：學習整合Firebase AdMob SDK在iOS Apps內放廣告 ]]></title>
        <description><![CDATA[ 就跟許多開發者一樣，你或許想要找到從 App 盈利的方式，最簡單的方式，就是將你的 App 放進 App Store，以$0.99美元或以上的售價來銷售，這個付費模式對某些 App 來說非常適合，不過，這並非唯一的獲利模式。本文，我們將介紹如何使用Google AdMob來盈利。  編者的話：這篇文章摘自《iOS 10 App程式設計進階攻略：39個必學的開發技巧》一書，如你喜歡本文，相信會對我們這本進階書有興趣。此書將於本星期稍後推出，請密切留意。 有點不懂，為何要使用Google AdMob呢？我們開發的是 iOS App，為何我們不使用 Apple 的 iAd 呢？  在2016年初，Apple宣布要停止 iAd App 網路服務。因此，你將不再使用 ]]></description>
        <link>https://www.appcoda.com.tw/google-admob-ios/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b37a</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Tue, 23 May 2017 08:40:29 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/05/admob-0.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何使用 CATransform3D 處理 3D 影像、製做互動立體旋轉的效果 ]]></title>
        <description><![CDATA[ 今天讓我們討論一下在iOS App的立體影像處理，而要講這題目就不可不講解 &#8211; CATransform3D。CATransform3D 是一個用來處理 3D 影像，像是旋轉、縮放、平移等 3D 影像的控制。CATransform3D 是採用三維坐標系統，x 軸向下為正，y 向右為正，z 軸則是垂直於螢幕向外為正。  你可以這樣理解CATransform3D ，它本身就是一個 4&#215;4 的矩陣：    在這邊，我們不需要了解矩陣中每一個數字是什麼意思，因為在 CATransform3D 中已經有方法可以處理大部分的功能：  CATransform3DTranslate CATransform3DRotate CATransform3DInvert CATransform3DScale CATransform3DAffine 如果只說道理，相信很難理解CATransform3D的運作，最好還是實作一個簡單的範例程式以闡釋當中的原理。在這篇，我要教大家如何做出一個可以被轉動的骰子，下圖就是完成品：    開始建立範例App 如常開啟Xcode並使用Single View Application建立一個新項目。在Main.storyboard， ]]></description>
        <link>https://www.appcoda.com.tw/catransform3d/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b379</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 王 富生 ]]></dc:creator>
        <pubDate>Wed, 17 May 2017 23:55:39 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/05/CATransform3D-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS開發者專訪 #7：致力打破學習藩籬，彼得潘引領文組生躋身科技專才 ]]></title>
        <description><![CDATA[ 鑑於科技快速發展帶來軟體專才需求，吸引不同領域的人前來學習程式設計，過去被認為與軟體業相距甚遠的文組生，近年也越來越多人想跨領域前來搶啖這塊大餅，儘管現今線上與線下的教學資源相當豐沛，但是對於完全沒有接觸過程式設計的人，仍是需要一位開發經驗較為豐富的領航員，打破學習的藩籬。    活躍於iOS技術社群的講師彼得潘，除了針對不同程度的學生推出客製化的教學課程，近期更推出100道 Swift iOS App謎題的實作計畫，引領各領域渴望學習iOS開發的學子，跨入程式設計的世界，期許替新進開發者指向軟體開發的康莊大道，透過互動式教學，積極收集學生的上課回饋，並且以生動的故事比喻，降低程式開發的學習門檻。  彼得潘身份相當多元，除了是多間大專院校的講師外，也自己開班授課，同時也是多家軟體公司的技術顧問，另外，他也出過多本程式設計暢銷書籍，包含《 Swift程式設計入門》、《 App 程式設計入門－iPhone, iPad 》等，並且在Medium、FB以及ALPHACamp Blog等分享開發心得及技巧。  彼得潘過去唸的是資工，但他承認自己在學生時代並不是特別用功，會如此細心鑽研iOS開發技巧，是因為自己是一名忠實果粉，因為醉心於蘋果的產品，而一頭鑽入蘋果開發者的世界，所以在發研發替代役時開始投入學習，至今已邁入第七個年頭。  欲打破學習藩籬，推出文組生教學計畫 彼得潘從2010年開始學習iOS開發，當時台灣會做App的人還很少，所以公司讓他一邊學習， ]]></description>
        <link>https://www.appcoda.com.tw/peter-pan-ios-developer-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b378</guid>
        <category><![CDATA[ 專訪 ]]></category>
        <dc:creator><![CDATA[ 陳 奕先 ]]></dc:creator>
        <pubDate>Mon, 15 May 2017 07:11:58 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/05/peter-pan-2.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Lottie初學者教學指南：如何在iOS App設計一個令人驚豔的動畫 ]]></title>
        <description><![CDATA[ 如果能設計一個好的UI(User Interface)動畫可以讓一個App大幅增進UX使用者體驗(User Experience)，這通常就是能讓一個感覺普通的App搖身一變成為質感極佳的App，非常重要的關鍵因素。然而，設計與實現一個有意義與功能兼備的動畫是挺有難度的，尤其是，如果你需要的動畫或過場視覺效果是極為複雜的，若要實現這個需求，這將對一個iOS程式開發者是一個非常艱困的任務。  假想你並不是一個獨立開發者，你是身在一個有程式工程師與UI/UX設計師的分工團隊中，有多少次你曾得面對這樣的場景，設計師給你看了一個非常酷的動畫，並尋求你能一起把它完成，你心想著這個設計的確看起來很酷，但實在有夠難的，且需要耗費一段時間才能有機會實現它。  現在，有了Lottie，一個由Airbnb設計開發，能讓開發者能輕鬆地不需要寫著冗長的程式碼，就有機會實現想要的動畫功能。你將可以擷取Adobe After Effects的動畫資料，直接在你的Xcode專案使用它。這實在太棒了，可以節省下你大量的時間來實現完成動畫功能需求。  在本篇教學，我將告訴你(妳)一些重點：  Lottie是什麼？ 你可以從哪裡找得到Lottie 動畫檔案 如何在你的iOS專案使用Lottie Lottie是什麼？ 第一個問題是：Lottie是什麼？它是由Airbnb所發展的，Lottie是一套Library，可將After Effects動畫應用在iOS、 ]]></description>
        <link>https://www.appcoda.com.tw/lottie-beginner-guide/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b377</guid>
        <category><![CDATA[ 動畫實作 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 10 May 2017 06:17:25 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/05/lottie-0.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 程式庫系列之四：Realm, SnapKit, AnimatedCollectionViewLayout, Whisper 以及 YNDropDownMenu ]]></title>
        <description><![CDATA[ 各位 iOS 開發者們，不曉得這幾篇以來的程式庫如何呢？希望我們所介紹的程式庫能對你有所幫助。這週也將繼續介紹我們所挑選的幾個 Swift 程式庫，希望能幫助你在 iOS App 開發的道路上昂首向前。  提示：你可以使用CocoaPods安裝這些程式庫到你的Xcode項目，如不懂使用CocoaPods，可以參考這篇教學文章。 1. Realm   說到要在 iOS App 裡儲存資料，相信開發者們想到最簡易的方式是使用 UserDefault，而如果是要存取有一定數量且略微複雜的資料，CoreData 想必會出現在選項之中。但 CoreData 在使用上卻不是那麼容易上手，因此現在向你介紹 Realm，這套類似於 CoreData 卻更容易使用的資料庫套件。  Realm 的資料庫設計概念是以 Model（模型）為主，我們需要設計出所需要的資料模型，在將資料儲存進去。這裡我們以建立一個簡單儲存個人資料的 Person 為例子：  首先輸入：  class Person: Object{     dynamic ]]></description>
        <link>https://www.appcoda.com.tw/swift-library-4/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b376</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 楊 敦凱 ]]></dc:creator>
        <pubDate>Tue, 02 May 2017 08:21:02 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/05/jamie-street-121598.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Push Notification教學：如何使用Firebase在iOS實現推播功能 ]]></title>
        <description><![CDATA[ 推播(Push Notification)對一個App而言，是來連結使用者相當重要的一個環節，吸引使用者的目光停留在你的App，讓他們想要使用你的App，產生對App的聯結感。所以我們要通知使用者讓他們知道有些重要的事情發生，像是：喜歡的球隊比賽即將開始了，即時收到西瓜限時30分鐘內特價拍賣，或是這周末後在沙漠有個重要會議。以上的情境想像，我想這些都可能是使用者想要被提醒的。  其中一個可以實現在iOS app的推播功能，就是應用Firebase Notification來執行。  在此教學中，我們會了解如何應用Firebase推播通知，懂得如何一步一步在Xcode介面實現，此份教學將會分成7大部份來說明。  設定Apple Developer Account  產生一個 CSR 檔 上傳你的 CSR 檔 準備 APNs 認證 搞定Firebase的推播設定 設計一個有Firebase推播功能的Demo App 測試Firebase推播功能 設定Apple Developer Account 第一步就是必須擁有一個付費的Apple developer account，是的，你需要登記在Apple Developer Program(年費是99美元) ]]></description>
        <link>https://www.appcoda.com.tw/firebase-push-notifications/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b375</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Jayven N ]]></dc:creator>
        <pubDate>Fri, 28 Apr 2017 01:57:34 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/04/push-notification-featured-2.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Firebase教學：如何實作上傳圖片功能與遠端存取 ]]></title>
        <description><![CDATA[ 看過了許多 Firebase 的開發應用（ Email / Facebook 登入、即時資料庫存取），你是否疑惑如何用 Firebase 上傳圖片或影片等檔案呢？ 今天來跟大家分享在 Firebase 中比較少被我們用到的 Storage 功能。  我們先來看看官方的影片吧：    這次我們就以上傳照片為主，開發一款當使用者從手機選擇照片上傳後，會在我們 CollectionView 上顯示出來的 App。  其實再加上以往所學的註冊登入功能，基本上就是一款簡易版的 Instagram 囉！（有這麼簡單？（誤））  你即將開發的範例App 未開始寫程式碼之前，先來看看最終成果：    不錯吧？  範例App背後的運作方式 為了讓大家更了解背後 Firebase 與 App 的運作方式，我畫了一張示意圖：    簡單來說，就是利用Firebase的Storage存放照片，而照片連結則存放在Firebase的Database。首先，我們要把欲上傳的照片傳到 Storage 存放，成功後會收到 Storage 回傳的照片連結，再將連結寫入資料庫中方便日後存取。 ]]></description>
        <link>https://www.appcoda.com.tw/firebase-storage-database/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b374</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Chen Kuan L. ]]></dc:creator>
        <pubDate>Fri, 21 Apr 2017 08:59:12 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/04/firebase-upload-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何透過整合Mixpanel分析追蹤 iOS App 使用者行為 ]]></title>
        <description><![CDATA[ 你知道你的應用程式的哪個功能是讓大部分用戶沈迷的嗎？哪個是應用程式裡最受歡迎的分頁呢？ 如果讀者希望你的應用程式被用戶所愛，就必須更了解用戶如何使用你的應用程序。因此，不可避免的，我們必須在應用程序中整合某些分析工具。 其中，Mixpanel是最流行的mobile分析平台之一。  Mixpanel是一個平台，用於追蹤你應用程序中的用戶操作。它會收集數據並進行分析，以便你更容易能找出應用程式中的問題。透過分析他們在程式中的使用情況，藉此保留或是吸引客戶。每個用戶都綁定一個唯一標識符，可以幫助你紀錄他們在應用程式中的使用模式。Mixpanel是移動分析平台之一，不僅提供使用者的頁面瀏覽紀錄，更專注於追蹤用戶操作行為。它有一個Web dashboard，可以幫助你分析不同形式的數據。借助這項mobile分析功能，開發者可透過用戶使用應用程序的方式了解他們，進而保留有價值的使用者。  本教程將帶讀者一同探索Mixpanel應用，以下將是你會在本文學習到的內容：  設置Mixpanel帳戶 在你的應用程式中使用Swift 3整合Mixpanel分析，其中將包括Mixpanel初始化，用戶操作追蹤，註冊超级屬性(super properties)以及如何添加人員屬性。 最重要的是，本教程內容非常容易，適合大多數讀者。讓我們開始吧。  在Mixpanel建置一個專案 在把Mixpanel與你的應用程式整合之前，開發者需要在 mixpanel.com 上註冊，創建一個Mixpanel帳戶。 Mixpanel分別有免費和付費版本。開發者可以選擇使用免費版本來維護你的應用程式， ]]></description>
        <link>https://www.appcoda.com.tw/mixpanel-integration/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b373</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Surabhi Chopada ]]></dc:creator>
        <pubDate>Wed, 19 Apr 2017 20:22:25 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/04/mixpanel-analytics.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift的問號與驚嘆號：可有可無的 Optional ]]></title>
        <description><![CDATA[ 可有可無的 Optional 是 Swift 裡一個非常特別的角色。你看它號稱可有可無，我們卻還要認識他，就知道他多特別了。有了它，不管何種型別的變數或常數，都可以沒有任何內容，也就是無值的狀態。至於這有什麼好呢? 這故事得回到很久很久以前，從沒有 Optional 的程式世界說起。  Optional 發明的緣由 有了變數和常數，我們可以輕易儲存任何型別的資料。但在某些特別的情境，我們希望變數和常數能處於一個沒有內容的狀態。比方我們開發一個處理學生考試分數的程式，宣告變數 peterGrade 儲存班上最聰明學生 Peter 考試的分數。    但是 Peter 很有正義感，很可能為了英雄救美或拯救世界而缺考呀。這時候 peterGrade 要儲存什麼樣的內容才能表示缺考呢 ? 應該不能是 0，因為學生有可能考 0 分，0 分和缺考是不一樣的。我們希望可以在程式裡判斷是否缺考，給缺考的學生補考的機會。  也許 -1 是個不錯的解答，畢竟不可能有學生考 -1 ]]></description>
        <link>https://www.appcoda.com.tw/swift-optional-intro/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b372</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 彼得潘 ]]></dc:creator>
        <pubDate>Tue, 11 Apr 2017 02:05:19 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/04/optional-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 程式庫系列之三：Alamofire, SwiftyJSON, Kingfisher, KeychainAccess 以及 NVActivityIndicatorView ]]></title>
        <description><![CDATA[ 各位 iOS 開發者們，不曉得這幾篇以來的程式庫如何呢？希望我們所介紹的程式庫能對你有所幫助。這週也將繼續介紹我們所挑選的幾個 Swift 程式庫，希望能幫助你在 iOS App 開發的道路上披荊斬棘。  提示：你可以使用CocoaPods安裝這些程式庫到你的Xcode項目，如不懂使用CocoaPods，可以參考這篇教學文章。 1. Alamofire   網路資料的傳輸是 App 一個重要的功能，幾乎是每位 iOS 開發者都會碰到的課題。雖然我們可以使用 iOS 原生的 URLSession 等來處理這些事情，但如果有個程式庫可以幫助我們更快的完成這樣任務，那就在好不過了。  相信過往寫過 Objective-c 的開發者們對於 AFNetworking 這套程式庫不陌生。這是套供 Objective-c 使用的網路程式庫。而開發團隊則為 Swift 製作了 Alamofire 這套專用於 Swift 上網路傳輸處理的程式庫。  而我們該如何使用呢？我們以取得行政院環境保護署的空氣品質污染指標  Open Data ]]></description>
        <link>https://www.appcoda.com.tw/swift-library-3/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b371</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 楊 敦凱 ]]></dc:creator>
        <pubDate>Wed, 05 Apr 2017 17:50:53 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/04/swift-library-3.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 在 Swift 專案中使用 Javascript：編寫一個將 Markdown 轉為 HTML 的編輯器 ]]></title>
        <description><![CDATA[ 一直想寫一篇文章，關於如何將 Swift 和 Javascript 結合在一起，以構建強大而功能豐富的 App。這並不是我們第一次聽人說要將 Javacript 代碼嵌入到 iOS 專案中了，但當你讀完本文後，你會感到這個過程會變得前所未有的簡單，仿佛魔術一般，你只需要做很少的工作。其中的奧妙就是一個叫做 JavaScriptCore framework 的框架。  你可能會想，為什麼總是有人愛用 JavaScript，為什麼不用 Swift 實現所有的功能？其實這也是我想問的，這裡我們陳述幾條理由：  那些曾經寫過 web App 、已經忘記 Javascript 怎麼寫的 iOS 開發者，通過 JavaScriptCore 框架，就有機會再次使用他們所鐘愛的語言啦。 對於某些任務，很可能已經有現成的 JavaScript 庫存在，它們和你要用 Swift 實現的功能其實並無區別。為什麼不使用現成的呢？ 很可能某些任務用 ]]></description>
        <link>https://www.appcoda.com.tw/javascriptcore-swift/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b370</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Sat, 01 Apr 2017 07:58:22 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/03/javascriptcore-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS開發者專訪 #6：數度職場急彎，魏巍由電台DJ成為iOS知名講師的華麗轉身 ]]></title>
        <description><![CDATA[ 現今隨著線上與線下學習資源越加豐沛，軟體工程師的就職門檻不若以前這樣高不可攀，吸引不同領域的人才嘗試跨入程式開發的工作，但多數人往往無法順利與業界接軌，本次專訪將請到知名iOS講師魏巍，談談他如何以一位文科學子身份，歷經多次職場急彎後，在軟體開發領域中站穩腳步。 ]]></description>
        <link>https://www.appcoda.com.tw/weiwei-ios-developer-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b36f</guid>
        <category><![CDATA[ 專訪 ]]></category>
        <dc:creator><![CDATA[ 陳 奕先 ]]></dc:creator>
        <pubDate>Mon, 20 Mar 2017 08:08:17 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/04/---1.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 程式庫系列之二：CVCalendar, Caishen, Hero, Charts 以及 SwiftMessages ]]></title>
        <description><![CDATA[ 各位 iOS 開發者們，還記得我們上篇所選的程式庫嗎？希望我們所介紹的程式庫能對你有所幫助。本週也將繼續介紹我們所挑選的幾個 Swift 程式庫，希望能幫助你在 iOS App 開發的道路上披荊斬棘。  提示：你可以使用CocoaPods安裝這些程式庫到你的Xcode項目，如不懂使用CocoaPods，可以參考這篇教學文章。 1. CVCalendar   當開發者希望為使用者提供日期選擇的功能時，iOS 原生的 DatePicker 可以達到大部分的功能需求。但如果可以提供更直覺的方式就更好了！CVCalendar 便是這樣的一套程式庫。CVCalendar 提供月曆樣式的UI介面讓使用者以直覺的方式選擇日期。  使用時首先建立出星期畫面以及月曆畫面：  //建構星期畫面 let weekView: CVCalendarMenuView = CVCalendarMenuView(frame: CGRect(x: 0, y: 0, width: 300, height: 15)) //建構月曆畫面 let calendarView: CVCalendarView = CVCalendarView(frame: ]]></description>
        <link>https://www.appcoda.com.tw/swift-library-2/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b36e</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ 楊 敦凱 ]]></dc:creator>
        <pubDate>Fri, 17 Mar 2017 08:25:16 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/03/swift-library-2.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ SpriteKit基礎介紹之一: 場景(Scenes)、節點(Nodes)、標籤(Labels)和座標點(Points) ]]></title>
        <description><![CDATA[ 建置應用程式很不簡單，但是做遊戲其實更難，特別是開發者本身不是一個玩家，雖然每當我開始學習遊戲編程時，都會這樣對自己說，最終卻都退卻了。今年，我終於意識到我做錯了：過去太專注在建立一個大的東西，因此從一開始就害怕眼前的巨大任務，但應該是從小的部分開始，保持愉快的開發步調。我們想製作有趣的遊戲，所以如果沒有享受創造它們的樂趣，那如何抓得到重點呢？因此，我得到了啟發：你不必從頭開始創建一個完整的遊戲，你只需要想到一些簡易的任務來起頭，其餘的就會自然發展下去。  在這個系列教程中，你會面對一個簡單的挑戰：藉由SpriteKit與Apple的2D遊戲框架，當你點擊螢幕時，將會同時讓標籤移動，縮放和旋轉，以下為本文讀者需要了解的概念：  Scenes Nodes Labels Points Gesture recognisers Actions 這些概念實際上是相當豐富的，所以讓我們開始吧！ :)  本系列教程介紹 在本系列的第一個部分中，透過將標籤(labels)置中在螢幕畫面的動作，來了解關於場景(scenes)、節點(nodes)、標籤(labels)和座標點(points)的所有知識。 ]]></description>
        <link>https://www.appcoda.com.tw/spritekit-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b36d</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Cosmin Pupăză ]]></dc:creator>
        <pubDate>Fri, 03 Mar 2017 21:06:58 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/03/spritekit.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 入門教學：知錯能改善莫大焉的 Error Handling ]]></title>
        <description><![CDATA[ 寫程式難免有錯，有人說程式設計師的工作，大概只有一半的時間在開發新功能，另一半的時間在喝下午茶。哦，不是啦，是在 debug，也就是所謂的修正錯誤。不過錯誤其實有兩種，剛剛提到 debug 解決的錯誤全是工程師該死，自己製造的 bug。但是這世上，其實還存在另一種無法避免，只能特別處理的錯誤，為此 Swift 特別發明了 Error Handling 的語法來幫助我們。  無法避免，只能特別處理的錯誤 什麼是無法避免，只能特別處理的錯誤呢 ? 比方我們做了一個影響你終生幸福的 App，判斷你能否追到 Angelababy，畫面如下 :    在這個畫面，使用者可輸入自己的條件，包含了星座，年收入，年齡和是否真心，然後再按下按鈕送出，即可知道自己和 Angelababy 是緣定三生，還是有緣無份。  想當然，失敗的機率很高，失敗並不可恥，重點是我們要知道為什麼失敗，如此才能設法補救。比方以下幾點都是失敗的可能原因:  年收入太少， ]]></description>
        <link>https://www.appcoda.com.tw/swift-error-handling/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b36c</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 彼得潘 ]]></dc:creator>
        <pubDate>Thu, 23 Feb 2017 19:09:59 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/02/swift-error-handling-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 程式庫系列之一：SwifterSwift, DynamicColor, PKHUD, Kanna以及PermissionScope ]]></title>
        <description><![CDATA[ 編者的話：近日收到不少讀者的電郵，希望我們可以介紹幾個好用的Swift程式庫。這個真的有點困難&#8230; Swift開發者開發了不少免費而且有用的程式庫，只選幾個的確有點難。有見及此，那不如每個（或兩個）星期為大家介紹幾個好用的程式庫。而今個程式庫系列會由新加入的教學團隊成員楊敦凱主理，留個言給他一點鼓勵和意見喔。  在開發 iOS App 的時候，工程師們總會使出渾身解數來完成各式功能。但有時會想是不是可以有更快速的方式呢？於是網路上便有許多熱情的開發者們將自己的獨門方法製作成各式各樣的程式庫(Library)以幫助更多的開發者。  以下，是我們所挑選的幾個 Swift 程式庫，希望能幫助你在開發之路上更進一步。  提示：你可以使用CocoaPods安裝這些程式庫到你的Xcode項目，如不懂使用CocoaPods，可以參考這篇教學文章。 1. SwifterSwift   SwifterSwift 是一個以 Extension 形式構成的程式庫，其整合了超過 500 個以上 UIKit、Cocoa、型別的 Extension，讓開發者在開發時可以快速和更簡單的運用這些相關功能。    舉一個簡單例子，你可能使用過UIAlertController顯示一些簡單或警告的資訊，而用法一般如下：  let alert ]]></description>
        <link>https://www.appcoda.com.tw/swift-library/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b36b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 楊 敦凱 ]]></dc:creator>
        <pubDate>Thu, 16 Feb 2017 21:40:40 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/02/swift-lib-1-1.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS開發者指南：如何使用Firebase整合Facebook登入 ]]></title>
        <description><![CDATA[ 不久前，James寫了一篇教程告訴讀者如何利用Firebase建立登入和註冊功能，現在開發人員常會使用一些聯邦式(Federated Identity)身份管理憑證，如Google登入和Facebook登入，讓用戶得以使用自己的Facebook帳戶註冊應用程序。這篇文章中，我們將學習如何使用Firebase身份驗證並且整合Facebook登入。  編者提醒：這是我們Intermediate iOS 10 Programming with Swift其中一個章節的簡化版本。現時只有英文版，中文版將於稍後推出。 在進入實作內文前，你可能有一個問題。為什麼我們需要Firebase身份驗證？為什麼不直接使用Facebook SDK來實現用戶身份驗證？  即使你要使用Firebase身份驗證，不代表你不需要Facebook SDK，你仍舊需要將它安裝在Xcode專案中。儘管如此，在實現Firebase身份驗證時，大多數時間都是使用你相當熟悉的Firebase SDK。這裡舉一個例子，這是用於在登入後檢索用戶顯示名稱的程式碼：  if let currentUser = FIRAuth.auth()?.currentUser {     nameLabel.text = currentUser.displayName } 如果你已經閱讀了前一章，應該會非常熟悉上面這段程式碼。現在讓我問你，如何檢索用戶的Facebook登入名稱？可能你會通過Facebook SDK文檔來尋找相應的API。 ]]></description>
        <link>https://www.appcoda.com.tw/firebase-facebook-login/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b36a</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Sat, 11 Feb 2017 00:21:59 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/02/firebase-facebook-login.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS開發者專訪 #5：啃老本也要做，Swift線上讀書會創辦人打造全方位學習平台 ]]></title>
        <description><![CDATA[ 隨著科技的演進，遠端會議及遠端工作逐漸盛行，現在，讀書會也搭上這個趨勢，Swift線上讀書會是目前舉辦遠端學習最成功的社團之一，創辦人紀相安身處在屏東，透過遠端服務積極推動線上學習，與會人員只要透過雲端視訊會議服務Zoom，就能夠參與即時線上互動。除了行動裝置開發外，他更同時開設了網頁前後端等線上讀書會，提供程式開發者學習不間斷的大平台，不僅如此，英語、越南語讀書會也來者不拒，甚至下一步已經規劃要開設RAP讀書會。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-book-club-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b369</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ 陳 奕先 ]]></dc:creator>
        <pubDate>Sat, 04 Feb 2017 00:51:54 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/04/-----.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 透過 Firebase 與 Raspberry Pi 製作簡單的物聯網 iOS 程式 ]]></title>
        <description><![CDATA[ 看過了這麼多的 Firebase 教學，如果能搭上現在最紅的物聯網應用是不是會很酷？這次想來跟大家分享如何使用 Firebase 將你開發的 iOS app 搭上現實生活的硬體。這邊我分成五個部分來介紹：  事前準備 樹莓派設置 Firebase 設定 樹莓派連接上網 iOS app 撰寫 1. 事前準備 樹莓派 Raspberry Pi 3 Model B 首先，你需要一塊樹莓派 Raspberry Pi 3 Model B 。這塊是最新的開發版，但基本上只要可以連上網以前的板子都可以使用哦，一塊大約35美金。請各位讀者先將樹莓派的作業系統灌好，可以從樹莓派官方教學網站取得安裝 NOOBS 系統: https://www.raspberrypi.org/learning/noobs-install/。    圖片取自：https://www. ]]></description>
        <link>https://www.appcoda.com.tw/swift-raspberry-pi/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b368</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Chen Kuan L. ]]></dc:creator>
        <pubDate>Thu, 26 Jan 2017 19:50:20 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/01/raspberry-pi-featured.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 精通Swift：列舉、閉包、泛型、Protocols和高階函數 ]]></title>
        <description><![CDATA[ 歡迎加入「精通Swift」系列教程，本文會與過去注重某一個應用的AppCoda文章不太一樣，這回不是要教你如何使用iOS APIs或是特定iOS主題，而是教你如何操作Swift，它是蘋果提供給開發者的新語言，我們將會探索一些使用技巧和技術，讀者可以跟著本篇文章讓你的Swift程式碼更加Swift，這個新語言的設計考慮了安全、清晰和穩定性，我們將使用Swift的幾個關鍵功能來實現這些目標。  讓我們開始吧，啟動Xcode並創建一個Playground文件。讀者不需要特別初始化一個新的專案來遵循本教程。這篇文章只是帶你探索程式碼，並使用Playgrounds測試它。  Enumerations(列舉) 如果你還沒聽過它，enumerations(或稱為enums)是Swift中一種特殊類型，它允許你表示多個「情況」或可能性。Enums(列舉)類似於Bool，但Bool只能是true或false，enums可以由開發者自行定義各種情況，列舉值(enum values)則為預設的多種情況之一，讓我們來看看。  假設你已經打開了Xcode的Playgrounds，我們先宣告一個enum:  enum DownloadStatus {     case downloading     case finished     case failed     case cancelled } 如你所見， ]]></description>
        <link>https://www.appcoda.com.tw/mastering-swift/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b367</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Pranjal Satija ]]></dc:creator>
        <pubDate>Mon, 16 Jan 2017 19:08:11 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/01/mastering-swift.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何利用 AsyncDisplayKit 開發響應式 iOS Apps ]]></title>
        <description><![CDATA[ 在 2011 年，我認識了一位非常聰明的傢伙，叫做 Mike Matas on Ted 。他介紹了在電子書用到的一種增強用戶體驗的新方法，能夠創建令人驚歎的用戶體驗。這個 App 所達到的流暢程度讓人無法相信這是一個手機 app。同年的晚些時候，這個 App 所屬的公司被 Facebook 收購，並將這種技術用在自己的產品中，從而使數億萬用戶獲得這種傑出的體驗。  我對於這個被「大公司」使用並維護著的、需要項目中全體開發者花費大量的時間和一致努力的程式庫，一直感到很好奇。    AsyncDisplayKit 是什麼? AsyncDisplayKit 是一個 iOS 框架，目的是讓你的 app 的用戶界面是「執行緒安全」(Thread Safe)的，也就是讓你將所有的「代價高昂的」 view 在顯示之前的準備工作都放到後台執行緒中。這會讓你的 app 顯得更加優雅、平滑並具備一個響應式的 UI。 ]]></description>
        <link>https://www.appcoda.com.tw/introduction-asyncdisplaykit-2-0/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b366</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Ziad Tamim ]]></dc:creator>
        <pubDate>Thu, 12 Jan 2017 20:07:01 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/01/asyncdisplaykit.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何利用 Firebase 建立登入和註冊功能 ]]></title>
        <description><![CDATA[ 隨著 Parse 及依託於其上的數據庫的停運，眾多 Parse 用戶紛紛將行動 App 轉移到 Firebase 和 Realm 上面來。由於便捷快讀的原因，Firebase 當下已成為最為流行的雲端數據庫之一。它同時支持了 iOS、Android 和 Web，這對大型項目非常有利，因為可以在所有主流設備上獲得數據庫的支持。Firebase 的所有者是 Google，意味著服務器極其可靠，能夠隨時獲得幫助。Firebase 已被一些超大型企業所採用，比如 PicCollage、Shazam、Wattpad、Skyscanner 等，可想而知 Firebase 是非常值得信賴的。  隨著 Firebase 最新的一次升級，它變得前所未有的強壯和強大。你可以通過 AdMob 從這個平台上獲利，通過通知保持用戶粘滯性， 或者用於訊息(Cloud Messaging) 又或利用雲端存儲( ]]></description>
        <link>https://www.appcoda.com.tw/firebase-login-signup/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b365</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ James Dacombe ]]></dc:creator>
        <pubDate>Mon, 09 Jan 2017 05:51:04 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2017/01/firebase_logo.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS開發者專訪 #4：搶搭科技浪潮，非本科生擠身百萬工程師之列 ]]></title>
        <description><![CDATA[ 本次專訪人物為目前任職於一零四資訊科技公司的資深工程師胡秩瑋(Brian)，非本科系的他憑藉對程式的熱情，從學生時期就開始接案練功，快速累積寫code的經驗值，畢業後進入創業學校ALPHA Camp，透過教學加強對程式底層的認識，目前在一零四負責開發新應用，年紀僅僅26歲的他，已擠身為年薪破百萬的工程師之列。 ]]></description>
        <link>https://www.appcoda.com.tw/brian-ios-developer-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b364</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ 陳 奕先 ]]></dc:creator>
        <pubDate>Thu, 29 Dec 2016 23:20:20 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/04/---2.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Auto Layout學習指南：利用Visual Format Language和程式碼設定約束畫面佈局 ]]></title>
        <description><![CDATA[ 做為一個iOS開發者，你應該知道在任何專案的待辦任務清單內，都會有視圖(views)以及子視圖(subviews)之間constraints設定的問題，無庸置疑，設定constraints(約束條件)是相當棘手的議題，它常常會讓你在開發應用程式時感到痛苦，但其實一切只取決於開發者是否理解它，事實上，約束條件就是你想要應用於螢幕上任何圖形元素的佈局規則，必須考慮視圖與子視圖在畫面上的位置、大小以及視覺關係，並且當設備的方向改變時，要定義UI元件的預設表現。  約束條件可以透過兩種方式進行設定:包含圖形以及程式碼，多數人都會選擇使用圖形化介面來進行約束條件設定，只要在storyboard或XIB檔案中即可直接進行，這樣做的好處是可以讓開發者立刻就藉由畫面看到視圖之間應該要設立的約束條件，所以開發者只要看到畫面即可進行，儘管這個方法實作比較容易，卻也很可能因為給定的約束條件相互矛盾，導致畫面需要的佈局約束條件無法被同時滿足，而讓應用程式在運行時出現問題，雖然大多時候Xcode可以提供你一些協助，可透過提示指出被誤植的constraints，讓開發者可以修復並更新這些設定，直到不再出現約束條件衝突為止。  另一方面，透過程式碼則是另外一個設定約束條件的方法，它包含了兩個不同的選擇:使用UIKit提供的屬性以及方法，或透過另外一個特殊的格式語言Visual Format Language，如果你從未操作過，那本文將提供讀者首次認識它們的機會，在這篇教程的最後你將可以決定自己是否適合在程式碼設定約束條件，以及哪種方式會是你所偏好的，實際上，這些方式都是可以被組合使用的，而且它們也應該被拿來混用，特別使用Visual Format Language的開發者( ]]></description>
        <link>https://www.appcoda.com.tw/auto-layout-programmatically/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b363</guid>
        <category><![CDATA[ Auto Layout ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Wed, 21 Dec 2016 08:08:52 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/12/auto-layout-programmatically.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ FMDB與SQLite 數據庫應用示範：打做一隻簡單的電影資料庫 App ]]></title>
        <description><![CDATA[ 通常在 iOS Apps 中使用數據庫並處理數據都會是一個重要和嚴肅的話題。在幾個月前我寫了一篇關於如何利用 SwiftyDB 來管理 SQLite 數據庫的文章。今天，我又提起數據庫這個話題，只不過這次我會介紹另一個庫。你也許聽說過了，它就是FMDB。  這兩個庫的功能都是一樣的，都是用來與 SQLite 數據庫打交道並允許你高效地管理你的 App 數據。但是，它們在使用上是截然不同的。SwiftyDB 提供了一個高級 API 來隱藏所有 SQL 細節和其它底層操作，而 FMDB 提供了一個更精細的粒度來處理數據，它是一個位於更底層的 API。它仍然「隱藏」了與 SQLite數據連接和通訊的細節這些非常繁瑣的工作，大部份開發者想要的功能無非是想自定義查詢和操作數據。總的來說，兩個庫在不同的情況下各有所長，這取決於 App的特性和目的。因此，它們都是非常棒的工具，你可以根據自己的需要選擇最合適的一個。  現在，讓我們來看看 FMDB，它實際是一個對 SQLite ]]></description>
        <link>https://www.appcoda.com.tw/fmdb-sqlite-database/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b362</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Tue, 13 Dec 2016 00:22:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/12/fmdb-sqlite.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS開發者專訪 #3：致力豐富社群資源，Swift Taipei創辦人獲蘋果背書 ]]></title>
        <description><![CDATA[ 蘋果(Apple)公司近年積極推廣自家程式語言Swift，它同時兼顧開發速度和執行效能，Swift Taipei 創辦人John(林鈺翔)過去赴美出差的期間，看到國外Swift社群的蓬勃發展，與會人員不乏Facebook、Google等大公司開發者，也讓他看到這個新語言的未來性，下定決心要將這股風氣帶回台灣。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-taipei-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b361</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 陳 奕先 ]]></dc:creator>
        <pubDate>Mon, 05 Dec 2016 20:11:44 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/04/Swift_Taipei-------ichef----_--_.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 3 教學：使用 Core Image 偵測人臉 (Face Detection) ]]></title>
        <description><![CDATA[ Core Image 是 Cocoa Touch 中威力強大的內建 API ，同時也是 iOS SDK 中很重要的一部分，不過卻經常被人忽略。在本文中，我們將會介紹 Core Image 的人臉偵測（ Face Detection ）功能，並且展示如何在自己的 iOS App 中使用這項技術！    注意：本文屬於進階的 iOS 主題。我們假設你已經使用過包括 UIImagePicker 和 Core Image 在內的技術。假使你對於前述這些技術尚不熟悉的話，請參閱我們最新推出iOS程式教學書籍，等你準備好了再回過頭來重新閱讀本文。 編者話：本教學文章已更新至Swift 3，這使用Xcode 8（或以上）執行範例程式。 我們即將打造…… 在 iOS 5 （大約在 2011 ]]></description>
        <link>https://www.appcoda.com.tw/face-detection-core-image/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b360</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Gregg Mojica ]]></dc:creator>
        <pubDate>Mon, 28 Nov 2016 03:36:58 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/11/face-detection-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 3學習指南：重新認識GCD應用 ]]></title>
        <description><![CDATA[ CPUs(中央處理器)問世以來，最棒的改革之一就是發展多核心技術，藉此可運行多個執行緒，這代表著，我們可以在同一時間執行多個任務。  依序執行任務(非並行)或是fake multitasking是多年前使用的運行模式，只要你的年紀稍長，應該可以記得過去的老舊電腦，若是你曾經使用過老舊的系統，應該可以輕易的了解到我在說什麼，但是，不管多少個核心的CPU可以帶來多厲害的效能表現，如果開發者不曉得如何使用這些技術，那都是沒有用的，本文就是要介紹多工與多執行緒的編程如何實作，開發者必須在任何裝置上善用CPU多工(multitasking)的優勢，將程式拆分為多個區塊分配在多個執行緒中平行運作。  使用多執行緒的好處很多，最重要的一點就是縮減執行任務所需時間，提供較佳的使用體驗，在運行時不會有停留在某個畫面的延遲感，請想想看，若是有一個應用程式，它將一大串的images都堆放在主執行緒處理，那UI必須等到全部下載任務完成才會有反應，使用者不會想嘗試使用這樣的應用程式。  在iOS當中，蘋果提供兩個方法來實作多工任務:包含Grand Central Dispatch (GCD)以及NSOperationQueue的frameworks，它們都可以幫助開發者達到多個任務分配給多個執行緒或不同queues(佇列)進行同步運行的需求，本文我們將會專注在GCD實作應用上。不管如何，這邊有一個規則必須要遵守:主執行緒必須總是維持在閒置狀態，用於應付使用者操作觸發的介面變化，任何耗時的任務應該跑在concurrent或是background的佇列，這對於新進開發者來說可能難以消化及應用， ]]></description>
        <link>https://www.appcoda.com.tw/grand-central-dispatch/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b35f</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Wed, 16 Nov 2016 07:00:23 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/11/gcd.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS開發者專訪 #2：iOS Taipei 創辦人盼替程式新手點亮希望之光 ]]></title>
        <description><![CDATA[ iOS Taipei對於新進開發者更是不遺餘力提供指導，盡力排除與會者工作中遇到的疑難雜症，創辦人Aki期盼透過每週一聚，替程式新手點亮希望之光。 ]]></description>
        <link>https://www.appcoda.com.tw/ios-taipei-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b35e</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 陳 奕先 ]]></dc:creator>
        <pubDate>Thu, 10 Nov 2016 01:42:50 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/04/Aki--------.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS開發者指南：如何使用自動化UI測試 ]]></title>
        <description><![CDATA[ 你可能先前已經聽過自動化測試，尤其是在討論軟體品質的相關議題時，我們往往都會談論到自動化測試這個名詞。如果你不幫自己的專案寫任何的測試，可能會讓你遇上大麻煩，就算當下你感覺不到，但是長期來看，它將會累積成為很龐大的技術債務。  確實如此。  專案如果沒有寫測試，當越來越多開發者參與其中，並且隨著這個專案變得更大更複雜以後，要維護它幾乎是不可能的任務，當你未來更動到code，將會發現運作時出現問題，而且甚至是當老闆站在你桌子前面開始為了這個bug大聲斥責時，才會發現這個問題，我相信你對這個情境很熟悉，對吧。  所以，開發者最好要去了解如何使用測試，這樣一來，將得以改善你專案的品質，並且讓自己成為更優質的軟體工程師。  在iOS當中，有兩種類型的測試:  Unit test(單元測試): 在class裡面測試某一個特定的動作。 請確保這個動作在該類別運行時是獨立作業的。 UI test(介面測試): 它也被稱為整合測試。 用來測試在app運行時，使用者的每個動作是否與預期相同。 確保全部的類別在作業時都妥善配合在一起。 上述兩種測試都一樣重要。  如果你只有寫unit tests，但完全忽略了UI tests，你將會陷入下列情境中：    如你所見，就像上圖的兩扇窗戶將無法順利配對運作，當把它們放在一起，糗事發生了，你可以看到畫面中的男子面對這個情況如此無奈。&#x1f609; ]]></description>
        <link>https://www.appcoda.com.tw/automated-ui-test/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b35d</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Hoang Tran ]]></dc:creator>
        <pubDate>Thu, 03 Nov 2016 18:12:39 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/11/APPCODA.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS開發者專訪 #1：Swift Girls 創辦人教你如何跨越程式高牆 ]]></title>
        <description><![CDATA[ 從自學Swift程式語言書開始，十天就接了第一個案子，參加過三次黑客松比賽，就有兩次獲獎的經驗，她是Swift Girls社群發起人-鄭雅方，熱衷於社群活動的她，不吝於提攜新進開發者，非本科系出身的鄭雅方，本文將以自身經驗，提出四點建議，期待讓更多人一同參與這波程式學習的浪潮。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-girls-interview/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b35c</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ 陳 奕先 ]]></dc:creator>
        <pubDate>Fri, 28 Oct 2016 18:14:28 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2022/04/--_Swift_Girls------_---------.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS開發指南 : 如何使用HTML Templates和 UIPrintPageRenderer製作PDF ]]></title>
        <description><![CDATA[ 你曾經被要求在你的app內建立PDF文件嗎？如果你目前仍未寫過這類的應用程式，那你之前曾經想過如何製作這個功能嗎？  本篇教程透過提問的方式來起頭，上述這些問題都是關於本文所要探討的，而在iOS中建立PDF文件通常看似是條通往地獄的道路，但是其實你可以避開它，做為一個開發者，必須要手握許多資源，建立多元的解決方案，透過不同方式在可控制成本內達成你的目標，我必須承認，手動繪製PDF頁面可能會是相當艱辛的過程(根據開發需求)，而且也是一項降低生產力的任務，它需要計算points，增添線條，設定顏色、insets、offsets等等，儘管這可能是一項很有趣的過程(對某些人來說)，但若是需要繪製的文件太過複雜，這無疑會是個繁雜的工作。  編者註: 此教程已更新至 Xcode 8 及 Swift 3。 這篇教程中，我的目標是呈現給讀者一個不同的PDF文件生成方式，且這些方式都將會比過去手動繪製更簡單，這套解決方案是建立在使用HTML templates之上，概括可歸納在下列這些步驟：  根據需要繪製的PDF文件內容或格式創建HTML templates。 使用這些HTML templates去生成真正的內容(可以選擇把它呈現在web view)。 把你想要製作的HTML內容輸出為PDF。 在最後一個步驟中，困難的工作將由iOS幫你完成。  繼續往下介紹，我想你會同意一個事實，開發者會偏好透過HTML操作去取代直接繪製PDF。在這個範例中， ]]></description>
        <link>https://www.appcoda.com.tw/pdf-generation-ios/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b35b</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Fri, 07 Oct 2016 07:44:22 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/10/pdf-html-templates.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 10：如何使用 Speech 框架建立語音輸入 App ]]></title>
        <description><![CDATA[ 在 2016 WWDC 大會上，蘋果公司推出了可以用於語音識別的 Speech Kit 框架。實際上，Siri 就是用 Speech Kit 框架來進行語音識別的。其實現在已經有一些語音識別框架了，但它們要麼太貴，要麼用法複雜。在本教程中，我將使用 Speech Kit 創建一個類似 Siri 的 app 用於將語音轉換成文本。  建立 App UI 注意: 你需要使有 Xcode 8  以及一台搭載 iOS 10 的設備進行測試。 新建一個名為 SpeechToTextDemo 的專案。打開 Main.storyboard ，拖入一個 UILabel、一個 UITextView 以及一個 UIButton。  最終效果如下： ]]></description>
        <link>https://www.appcoda.com.tw/siri-speech-framework/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b35a</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Sahand Edrisian ]]></dc:creator>
        <pubDate>Tue, 27 Sep 2016 21:35:32 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/09/speech-kit-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 開發者！用Vapor打造你的第一個Web App吧 ]]></title>
        <description><![CDATA[ 在2015年的WWDC上，蘋果宣布Swift將會開放原始碼，不久後，在2015年的12月，Swift的code base即公開在 GitHub上。  這份公開的Swift 源始碼向全世界開發者介紹了Swift多面向的擴展應用，也讓世人見識到這個語言未來蘊藏的許多可能性。  就如預期一樣，開發者迅速開發出不同面向的Swift新應用，其中一項就是透過Swift語言去打造一個web app，我們將在接下來的篇幅去探索這個應用。  為什麼需要認識它？ 如果你想幫自己的iOS app建置了後台，在伺服器上使用相同程式語言將會有很多優點，它可以比較容易維持程式碼風格的一致性。  目前已有三個很棒的Swift伺服器(server)端建置服務，包含：Perfect, Kitura以及 Vapor，本篇文章將會帶領讀者一起去探索Vapor，發掘使用Swift建置server的趣味世界。  接下來，本文將教你如何安裝Vapor以及Swift 3，並且使用Swift學習Server端的基礎應用，同時，也會展示如何將其部署到Heroku上，透過Swift建置你自己的後台。  開發前準備工作 在本文中，我們會使用很多的bash commands，因此，開發首要條件，就是對於基礎的bash指令以及終端機(Terminal)都要有基本認識，另外，Vapor是使用Swift 3進行開發，所以Xcode版本也要更新到8.0。 ]]></description>
        <link>https://www.appcoda.com.tw/server-side-swift-vapor/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b359</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Sahand Edrisian ]]></dc:creator>
        <pubDate>Sun, 18 Sep 2016 19:19:54 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/09/vapor-web-framework.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ CALayer 初學者指南：如何增加陰影效果、邊框、製作圓角 ]]></title>
        <description><![CDATA[ 本篇文章將會談論iOS開發中的關鍵議題之一layers，它為Core Animation框架的一部份，雖然讀者可能已經接觸過iOS中的Views，卻可能不知道，每個View都是透過layer做為圖形繪製的基礎。  讀者可能會想「過去開發從未碰觸到layer，它重要嗎？」，但事實上，你開發的應用程式中，layer都扮演著重要的角色，因為每個View的圖形繪製都是由layer所支持，也是因為Layers的存在，所以iOS可以輕易從應用程式裡獲取View裡面的bitmap(點陣圖)資訊，提供給裝置中的圖像處理器，請看下列圖表（擷取自Apple ），顯示Core Animation位於iOS圖形繪製的層次結構中。    為什麼需要Layers? 使用智慧手機裝置時，使用者都預期能夠處在一個順暢的操作環境中，因此，保持一致的幀率（描述視頻流更新的的頻率）是至關重要的一件事，如此才能確保提供使用者流暢的使用體驗，在iOS中，圖形處理器為每秒刷新60次的頻率，為了讓系統能維持在這個速率，一個非常基本卻強大的圖形功能layer被創造出來，並直接運行OpenGL這個圖形處理器。  OpenGL (Open Graphics Library，開放圖形庫)提供iOS圖性處理器最底層的（也是最快）訪問，但是，OpenGL就算處理極為簡單的需求，也必須透過大量的代碼去達成任務。  為了緩解這個問題，Core Graphics因運而生，它提供了較高階的功能， ]]></description>
        <link>https://www.appcoda.com.tw/calayer-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b358</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Pranjal Satija ]]></dc:creator>
        <pubDate>Tue, 06 Sep 2016 00:19:18 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/09/calayer-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 結合 iOS 10 的 User Notifications：傳送米花兒的幸福打氣通知 ]]></title>
        <description><![CDATA[ 通知在 iOS 是個讓人又愛又恨的功能。因為通知，我們按三餐收到情人的甜言蜜語。也因為通知，害我們凌晨三點收到情敵的恐怖訊息。接下來就讓我們結合 iOS 10 最新的 UserNotifications framework，實現散播幸福散播愛的米花兒通知。    註：特別感謝插畫家 Hana 提供米花兒的插畫和文字。 徵求使用者同意，獲得發送通知的權限 收到心上人的通知很開心，收到不是人的通知卻很恐怖。Apple 特別重視別讓使用者不開心，唯有徵求使用者同意後，App 才擁有發送通知的權力。明人不做暗事，我們就在 App 啟動時徵求使用者同意吧。  編者註：首先，下載這個範本項目，然後跟著以下步驟學習加入通知（User notifications）。另外，請記得使用Xcode 8打開範本項目。 加入 UserNotifications Framework import UserNotifications 在 iOS 10，通知相關功能定義在 UserNotifications ]]></description>
        <link>https://www.appcoda.com.tw/ios10-user-notifications/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b357</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ 彼得潘 ]]></dc:creator>
        <pubDate>Sat, 27 Aug 2016 00:38:24 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/08/user-notification-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ CAGradientLayer 教學：如何在 iOS App 製作漸層顏色 ]]></title>
        <description><![CDATA[ 每個開發者在設計程式介面時都會用上不同的顏色組合和圖像，務求製作出賣相更吸引的作品。在顏色配搭上，單色使用有時候不免顯得單調，而漸層 gradient 的使用或許可以帶來意想不到的效果。我曾經好幾次在設計時運用了漸層顏色，感覺這個題目值得跟大家討論一下，就是這樣這篇文章便「誕生」了。它在技術上使用簡單，開發者們一定會喜歡這個簡單又好看的功能。  那麼，怎樣才能既快速又輕鬆地設定漸層？這裡為大家提供三個方案。第一個，也是不太建議使用的方法，就是使用包含漸變效果的圖像。原因是缺乏靈活性，視覺上雖然不一定有分別，但對於開發者而言就不能隨意調整漸變度，若有更改就得重新上載圖像。第二個方案是使用 Core Graphics 技術，它比較適合進階開發者，對相關知識（例如圖形上下文、顏色空間等等）有一定程度的認知要求，對菜鳥來說恐怕會顯得艱深難明（除非你想越級挑戰咯）。最後來到第三個方案，一個既簡單又快捷的途徑：使用 CAGradientLayer 物件。  每一個視圖物件都包含了 CALayer 類別，而作為子類別的 CAGradientLayer 正正就是為了製作漸層效果而生。只需要簡單的四行程式碼便能應用，還有幾個屬性可為效果作出微調，而且絕大部份都能動畫化。下文會作詳細的分享， ]]></description>
        <link>https://www.appcoda.com.tw/cagradientlayer/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b356</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Mon, 22 Aug 2016 04:33:27 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/08/cagradientlayer-demo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何在 iOS App 中整合 Facebook 廣告 ]]></title>
        <description><![CDATA[ 不久前有人問我如何在項目中整合 Facebook 廣告。因為之前沒用過，原以為這需要經過一個漫長、痛苦的準備過程，所以看過一堆文檔之後。在很快就看完了這些文檔之後，卻發現並不是想象中的那樣，僅僅幾分鐘我就搞定了我的第一個 Facebook 廣告 App！  想為你的app加入廣告？Facebook 廣告是一種方法讓你輕易將廣告嵌入到你的 app 中，使你可以通過廣告的點擊量來獲得收入。整合過程並不複雜，在 Facebook SDK (一個 Facebook 推出的 SDK 框架）中，有一個框架是和廣告相關的，那就是 Audience Network 框架。 你只需在 app 中使用這個框架就行了。  Facebook 為不同的平台提供了不同的廣告類型，但對於移動設備來說只有 3 種類型：Native, Interstitial 和 Banners。下面簡單介紹一下這 3 種類型：  Native ]]></description>
        <link>https://www.appcoda.com.tw/facebook-ads-integration/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b355</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Sun, 14 Aug 2016 23:06:28 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/08/facebook-ads-ios.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 網路程式設計指南：如何使用 Alamofire ]]></title>
        <description><![CDATA[ 打從 2014 年 6 月發佈 Swift 語言以來，要在 Swift 中實現網路功能就有點麻煩。即便是 Swift 之父 Chris Lattner 也在 Twitter 發文表示，要解碼 JSON 還有「一段路要走」。因此許多人都在尋覓替代方案。當然也有內建的類別能夠處理基本的 JSON 剖析，但是對於開發者而言，總覺得沒有那麼友善。幸好有 Alamofire 的存在。同樣是由 AFNetworking （用過 Objective-C 的開發者大概都不陌生）的創作者所建立， Alamofire 在解碼 JSON 方面是非常好用的程式庫。  本文是一篇以假期為背景的文章，在本文中，我們將會大量探索與基礎網路程式設計有關的主題，並且建構出一個簡單 TODO App。  在本文中，你會看到如何使用與解碼 JSON ]]></description>
        <link>https://www.appcoda.com.tw/alamofire-beginner-guide/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b354</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gregg Mojica ]]></dc:creator>
        <pubDate>Mon, 08 Aug 2016 05:03:35 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/08/Swift-%E7%B6%B2%E8%B7%AF%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E6%8C%87%E5%8D%97%EF%BC%9AAlamofire.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 3：你要知道的新特色和改動 ]]></title>
        <description><![CDATA[ 在剛完成的WWDC大會上，蘋果發佈了新一代 Swift 3 和 Xcode 8 beta，並預計在本年第四季正式推出。自2015年12月，Swift語言正式開放源代碼，Swift 3 當然也不例外，同時支援 Mac OS X 及Linux 系統。如果你自上年十二月開始追踪 Swift Evolution，或已經曾在 IBM sandbox 試用過的話，或許已經心中有數 Swift 3 有著很大的改動。若果直接在 Xcode 8 上編譯現行的專案，幾乎可以肯定的說不會成功。  Swift 3 的更新主要分為兩個類別：  刪除在 Swift 2.2 中部份過時的功能 優化語言 我們先來看看被移除的部分，這些功能在 Xcode 7.3 ]]></description>
        <link>https://www.appcoda.com.tw/swift3-changes/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b352</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Cosmin Pupăză ]]></dc:creator>
        <pubDate>Thu, 14 Jul 2016 07:27:25 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/07/swift3-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ CocoaPods 簡介 : 如何輕鬆管理 Swift / Objective-C 的類庫 ]]></title>
        <description><![CDATA[ 有別於一貫 AppCoda 的教學，這篇教學相對簡短，目的只為你打開接觸 CocoaPods 之門。  什麼是 CocoaPods？ 透過 CocoaPods，開發者可以輕鬆地管理 Swift 或 Objective-C 的程式專案。若果你有曾經使用 Node.js、Ruby on Rails 或 Python，應該對這種相依性管理工具不會陌生。就算從來未有接觸也不要緊，我們先來簡單了解一下。首先，若果沒有相依性管理工具協助下，使用類庫便需要逐一下載並加入Xcode項目中，但當專案規模增大，要處理的類庫數目增加，逐一手動新增或更新絕對是費時失事之舉。開發者透過相依性管理工具（如 CocoaPods）幫助輕鬆管理Xcode項目，只需要透過簡單的指令就能管理類庫項目，節省大量配置和部署的時間。  舉例：你正在編寫一支程式，並需要使用如Firebase這種第三方類庫。  Firebase 本身是一個第三方類庫，但一般而言它需要與別的第三方類庫互相調用。所以，你便需要滙入包括Firebase本身及所需相關的類庫。開發者若然需要自行手動逐一處理，這無疑是一個冗長繁複的過程。  繼而日後 ]]></description>
        <link>https://www.appcoda.com.tw/cocoapods/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b351</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gregg Mojica ]]></dc:creator>
        <pubDate>Wed, 06 Jul 2016 08:44:24 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/06/pod-search.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何在 Xcode 8 建立 iMessage 貼圖程式擴充 ]]></title>
        <description><![CDATA[ 開發者可以為蘋果的 Messages 增建程式擴充，透過程式擴充與使用者互動。舉例說，你可以建立一個訊息貼圖擴充，容許使用者在iMessage 與朋友溝道時發送貼圖。或者，假若你在開發修圖程式，現在你可以透過擴充，讓使用者在不需要離開iMessage就可以修圖。這個功能確實為開發者帶來很大的創作空間。蘋果將會為 iMessage 設立 App Store 版面，到時候開發者就可以把製作好的程式擴充上架售賣。  為 iMessage 建立程式擴充，你便需要使用新的 Message 框架。這個框架支援以下兩類程式擴充：  貼圖包 iMessage 程式 在這篇教程，我將會為你展示如何使用框架建立一個貼圖包。由淺入深，之後再了解如何開發 iMessage 程式。  不管你想開發的是哪一個類型的程式，你都須要用上 Xcode 8。以現階段，Xcode 8 暫時只推出了測試版。若果你還未下載，可以到蘋果網站 下載並安裝。即使你現時已經安裝了 Xcode 7， ]]></description>
        <link>https://www.appcoda.com.tw/message-sticker-app/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b350</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Thu, 23 Jun 2016 05:41:25 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/06/imessage-sticker-pack.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ WWDC 獎學金得獎者訪問 (下)：21位年輕開發者分享成功經驗 ]]></title>
        <description><![CDATA[ 上篇介紹了十位WWDC 2016 的獎學金幸運兒，緊接而來會繼續為大家介紹另外十位成功得獎者的故事。今年的WWDC快將開始，當中不少的受訪者都顯得十分期待和雀躍。每年的WWDC門票都是求過於供，而當中350張的獎學金門券更是競爭熱烈，除了依靠個人實力，也得靠點運氣才能得到。  事不宜遲，馬上來看看餘下十一位獎學金幸運兒的訪問吧！  學生 #1: Zuhayeer Musa AppCoda: 首先恭喜你獲得獎學金！據我所知今年是你第二次以獎學金方法參加WWDC，首次拿下獎學金是哪一年？  Zuhayeer: 今年 (2016) 是第二次獲奬，首次是2014年。  AppCoda: 可以介紹一下你用來參加WWDC獎學金的程式嗎？  Zuhayeer: 這次提交的是 Bash，可以快速簡單地安排朋友聚會。在 Bash 程式中，只需要點擊幾下，就能建立活動並隨即收到朋友們的回覆。當你是受邀參加活動，Bash會向你發送即時更新及在程式中敲定細節。Bash 已經在 App Store 發佈。  AppCoda: 只有兩星期去建立一支程式固然是不容易，可以告訴我們編程的過程和遇到的挑戰嗎？  Zuhayeer: Bash 花了我們差不多三個月的課餘時間去完成，當我們在柏克萊 ]]></description>
        <link>https://www.appcoda.com.tw/wwdc-scholarship-2016-part-2/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b34f</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Gregg Mojica ]]></dc:creator>
        <pubDate>Mon, 13 Jun 2016 21:26:12 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/06/gregg-wwdc.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ WWDC 獎學金得獎者訪問 (上)：21位年輕開發者分享成功經驗 ]]></title>
        <description><![CDATA[ 本年度的 蘋果全球開發者大會 (下稱WWDC) 即將在6月13日開幕，一連5天在美國舊金山莫斯考尼會議中心 (Moscone West) 舉行。每年有超過5,000 iOS 開發者能夠參與大會，即席了解最新發佈的iOS, OS X, watchOS及tvOS。全球iOS程式開發者聚首一堂，除了出席會議，更有超過1,500位蘋果公司的工程師為150個實務操作實驗室及活動提供支援，為開發者提供協助和最佳開發技巧的意見及諮詢。  2016年度的門票在4月22日開售，縰然是售價高達US$1,599（約台幣50,299元）也是競爭激烈、一票難求！有興趣參加的開發者遞交申請後，還需要等候蘋果公司隨機抽選幸運兒。  除了抽樂透方法，蘋果還提供了350個獎學金名額，給予全球各地13歲或以上學生或STEM機構的成員申請，成功申請者除了獲得免費參加WWDC的機會外，部分更獲蘋果提供旅行費用的補貼。要成為350名額中的一人，申請的學生須要提交一或兩支自行開發的程式，以及一份有關開發過程的文章。蘋果的審批的考量是基於「技術知識能成功編寫一支程式；程式意念創新程度，以及；在提交申請的文章中展現出良好的表達和書寫程度」。蘋果沒有透露有多少名獎學金的申請者，但相信競爭都是十分激烈。  而我也曾經有幸透過獎學金計劃出席過WWDC!  在過往幾年，蘋果就獎學金申請者遞交的程式要求，列出了更清晰簡潔的指引。 ]]></description>
        <link>https://www.appcoda.com.tw/wwdc-scholarship-2016/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b34e</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Gregg Mojica ]]></dc:creator>
        <pubDate>Thu, 02 Jun 2016 06:30:29 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/06/hello-scholar.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何使用 Markdown 為 Swift 程式碼加入註解 ]]></title>
        <description><![CDATA[ Markdown 語法用一些特殊的關鍵字來描述文檔中的不同部分，比如參數、函數返回值等，從而使這些結構顯示出不同的樣式。新的 Markdown 文檔風格，最大的優點之一，是它允許對文本樣式進行更加靈活、徹底和豐富的定制。當然，如果你仍然想使用舊式的文檔風格，請參考先前的這篇教程。  對於每一個開發者而言，為程式碼加入註解是一種極好的習慣。雖然它表面上看起來會對開發進度有一定的影響，但這本身亦應當屬於開發過程的一部分。這並不意味著我們要對項目中存在的屬性、函数、類、結構或其它每一樣東西事無巨細地編到文檔中去，這根本是不可能的事情。而是應該「合理」說明解釋，也就是：  描述類、方法和屬性的用途，粗略程度要適當。而且最好對調用方法時應當注意的前提條件、事項或限制做重點說明。 高亮標出方法的輸入/輸出（參數及返回值）。 當你事隔幾個月再次閱讀項目程式碼時，程式碼中每一個方法的用途和每一個屬性的意義你都能輕鬆憶起。 當你分享程式碼或庫時，別的開發者能夠很容易就明白這些程式碼要如何使用。 通過某些工具（例如 Jazzy），我們就能生成專業的幫助文檔。 在 Xcode 中編寫的程式碼文檔可以通過三種方法進行預覽：  在屬性名、方法名或類名上點擊 Option/Alt＋ ]]></description>
        <link>https://www.appcoda.com.tw/swift-markdown/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b34d</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Thu, 26 May 2016 07:16:50 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/05/swift-code-doc.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 有關Swift 3.0：不斷推陳出新的技術，該如何學習才能累積？ ]]></title>
        <description><![CDATA[ 最近有一則在Swift.org上的消息，讓所有學習Swift程式語言的人都感到十分焦慮：    Swift 3.0不會與Swift 2.2 原始碼相容(source-compatible)。也就是說用Swift 2.2所撰寫的專案，大部份將無法直接在新版的Xcode直接執行，必須改寫成Swift 3.0。  但會不會是每一行都必須完全重新改寫呢？答案鐵定是否定的。目前也可以從Apple公開的資料知道，哪些東西會被變更。  那新版的Xcode會不會有一些檢查與引導的機制，轉換成Swift 3.0呢？  非常可能。像是Swift 1.0到2.0的做法：(Edit -> Convert -> To Latest Swift Syntax&#8230;)    然後開始幫你檢查哪邊需要變更：    跟著按一按很有可能就都調整好了，但也有可能有些程式片段需要做比較大規模的改寫。  那如果我最近正剛開始學Swift，到底是要等3.0出來再學，還是現在就可以開始呢？  其實如果你是一個追隨蘋果很長時間的開發者，時間越久，你會越習慣這種半年數小改，一年一大改的狀況。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-3-no-worries/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b34c</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Ryan Chung ]]></dc:creator>
        <pubDate>Wed, 11 May 2016 08:57:37 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/05/headache.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 用 Swift 開發一個 iOS 地域定向 App ]]></title>
        <description><![CDATA[ 在本文，我會演示如何在 iOS 上實現地域定向。我會介紹蘋果傳統的 CLRegion 類。我還將介紹如何對這種不常見的功能進行測試。我們還會演示如何實現複雜的跟蹤邏輯。最後，我將解釋如何創建你「自訂的」region，以及爲什麽要使用「自訂的」 region，它比起 CLRegion 來有什麽優點。通過地域定向，你可以開發出大量基於位置信息的創意 App。    Geo Targeting 項目 假設我們想記錄用戶所去過的餐廳。我們開始創建這個項目。首先，創建一個名為GeoTargeting的 Single View Application類型的 Swift 項目。  打開 Main.storyboard，在 ViewController 中加入一個 Map View。為 Map View　創建一個 @IBOutlet　連接。編譯器會報一個錯，先不管它， ]]></description>
        <link>https://www.appcoda.com.tw/geo-targeting-ios/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b34b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Eugene Trapeznikov ]]></dc:creator>
        <pubDate>Mon, 09 May 2016 05:23:56 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/05/geotargeting-ios.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 學習Swift程式語言：運算子重載（Operator Overloading）簡介 ]]></title>
        <description><![CDATA[ 好了，我們說的夠多了，讓我們來看看運算子超載(Operator Overloading)是怎麼一回事吧。  挑戰 這次的教學單的任務非常的容易：擴充乘法運算符的數量為標準功能。你將會用它來進行字串的聯級運算(concatenation operator)，但過程卻比想像中的簡單。所以你可以想像我們將完成下面的事情:  "abc" * 5 = "abc" + "abc" + "abc" + "abc" + "abc" = "abcabcabcabcabc" 在開始埋頭苦幹的撰寫程式碼之前，你可以先停下來想想看你會怎麼來解決這個問題？你會把他分成哪幾個步驟呢？當然，下面是我的做法：  建立結果變數(result variable) 並賦予它初始值- 預設的字串。 建立一個從2開始的迴圈，並且在函式接受到的數字做結束，每個迴圈的執行週期只做一件事情– 把字串加到結果變數上。 將結果顯示到Xcode的console上. 好了，這就是我構思的演算法－我們接著進入到實作的部分吧。  基本的運算子重載(Basic Operator Overloading)   首先，我們開啟Xcode 並且開啟playground模式。刪除playground模式下所有的內容，並且新增乘法運算函數的原形：  func ]]></description>
        <link>https://www.appcoda.com.tw/operator-overloading-swift/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b349</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Cosmin Pupăză ]]></dc:creator>
        <pubDate>Sat, 30 Apr 2016 20:41:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/04/operator-overloading.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 自行建立Parse伺服器系列之二：如何在Heroku或AWS建立及部署Parse伺服器 ]]></title>
        <description><![CDATA[ 簡單一點，Parse的關閉也就是要給伺服器搬家，找另外一個地方寄存伺服器（包括操作數據、與數據庫互動、收取及發送要求等等）。Parse作為一個後端即服務（Backend-as-a-Service)，為開發者提供伺服器和數據庫整合為一的便利。然而，隨著Parse將於2017年1月28日完全關閉服務，還是建議你把使用Parse服務的apps及早遷移。根據Parse官方發出的遷移程序資訊，建議使用者先把數據庫遷移，然後才移動伺服器。在此之前，先假設你已經讀過上篇文章，已經把數據庫順利完成遷移。  幸運地，parse-server (由Parse的母公司Facebook在GitHub發佈的開源碼專案）可以部署在現時大部份的雲端服務。在這篇教程之中，我們將會詳述如何在Heroku安裝parse-server。如果你不曾聽過Heroku，它是一個由Salesforce持有、而極受歡迎的雲端服務供應商。在本文的下半部，我們會轉到Amazon Web Services (AWS) 做相同的教學。相信不需介紹，你一定聽過AWS，很多極受歡迎的apps都是使用AWS。  在Heroku安裝Parse-server －讓我們開始吧 在開始之前，先到Heroku.com並註冊一個賬戶。由於是範例展示，我所選用的是免費方案。然而在實際情況下，則按照你所需要的去決定是否升級至付費方案。你可以在這裡查看Heroku免費和所有付費方案。  這裡提供兩個方法讓你在Heroku伺服器部署parse-server。第一個是點擊下圖的「Deploy to ]]></description>
        <link>https://www.appcoda.com.tw/parse-server-installation/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b348</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gregg Mojica ]]></dc:creator>
        <pubDate>Mon, 18 Apr 2016 18:06:11 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/04/Parse-server-AppCoda.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ HealthKit 教學：建立計算步行距離的健身App ]]></title>
        <description><![CDATA[ 為了著重健康意識的一群 － 高科技消費者、運動狂熱份子、甚至只是一個普通的iPhone用戶，Apple透過 HealthKit 讓開發者來追踪重要的健康數據。這是很酷！用戶輕易地便可以追踪到一段時間內的健康數據記錄。除了有助提升健康知識之外，看到數據所顯示出來的正斜率，確實是一種鼓舞和強大的激勵因素。  大家或許想像到，管理健康資訊最重要的是安全性。HealthKit 的所有資訊控制權都是掌控在用戶手中。用戶可以按自己的意願去授予或拒絕 App 訪問健康數據的請求。  對於開發者，我們需要向用戶請求授權以讀寫 HealthKit 的數據。事實上，我們需要特別說明希望訪問或受影響的是什麼數據。另外，每個存取 HealthKit 的 App 都須具備私權政策，讓用戶可以感受更安心的資訊交易。  關於 OneHourWalker 今天，我們將會建立一個有趣的小程式，它既可以讀取 HealthKit 的資訊，也能寫入新數據。    OneHourWalker 是一個健康程式，以一小時為限，追踪用戶行走或跑步的距離。然後，用戶可以把記錄下來的數據分享至 HealthKit，而它將可以訪問 Health 程式。 ]]></description>
        <link>https://www.appcoda.com.tw/healthkit-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b347</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Matthew Maher ]]></dc:creator>
        <pubDate>Sun, 10 Apr 2016 23:05:48 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/03/healthkit-intro.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 自行建立 Parse 伺服器系列之一：如何把資料庫遷移至MongoDB ]]></title>
        <description><![CDATA[ 在開始之前，鼓勵大家先看看我早前一篇有關 Alamofire教學的文章（暫時只提供英文版）。雖然兩者之間沒有關連性，但可以對本文將會提及的技巧加深認知和了解。  注意: 為已發佈的App進行資料遷移之前，我建議你先抄寫一個複本或者使用測試App來預演一次，為正式遷移時減低不熟悉程序而產生的風險。 Parse官方提供了有關遷移程序的詳細資訊，以及如何把App由Parse伺服器分別轉移至其他伺服器（例如 MongoDB）及雲端服務商。Parse 建議了兩個遷移程序：  把資料庫遷移至其他服務商，例如MongoLab或ObjectRocket。 把伺服器遷移至雲端寄存公司，例如AWS, Google App Engine 或是Heroku。 Parse同時把上述程序設定期限，建議在2016年4月28日或之前完成資料庫遷移，而伺服器則在2016年7月28日或之前。制定好時間表，預留充足的時間處理錯處、確保App運作正常，使你提供給使用者的服務無需中斷。  很多人會提出一個疑問，為何遷移要分成兩個步驟？作為一個BaaS（後端即服務），parse.com把 伺服器 及 資料庫 整合為一。伺服器操縱資料庫，進行查詢、獲取信息、處理密集工作任務，並與資料庫作出互動。二者工作緊密相連而形成後端系統。當Parse即將關閉，失去整合的平台， ]]></description>
        <link>https://www.appcoda.com.tw/parse-server-migration/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b346</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gregg Mojica ]]></dc:creator>
        <pubDate>Wed, 30 Mar 2016 03:35:15 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/03/CZ2PzT-UUAEznhV.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 初學者指南：使用社交框架與 UIActivityViewController ]]></title>
        <description><![CDATA[ 你早已被截止期限壓得喘不過氣，在耗費了好幾個鐘頭之後，才發現有夠困難甚至做不出來，於是又再度坐在電腦前面浪費另外好幾個鐘頭，就只為了整合 Facebook 或 Twitter 的 SDK 。不然的話，你還能夠做些什麼呢？或許可以開始設想幾十個不同的藉口來向老闆或客戶說明無法交付 App 的原因？或許你已經感到口乾舌燥非常窒息？或者其實有另外一種簡便的作法，可以毫不費力地在你的 App 中加入分享功能？  好吧，親愛的讀者們，但願沒人遭遇過我剛才所描述的窘況，針對那個問題，確實存在一個完美而快速的解決方案。事實上，這個解決方案有個名稱，叫做 Social （社交）框架，而且就內建在 iOS SDK 當中。許多人很可能早已使用過，但是我敢打賭應該還有很多開發者不知道此框架的存在，也不知道只需要幾分鐘的時間即可在 App 中實現分享功能！一點也不誇張！  如你所知， Apple 好久以前就已經在 iOS 中加入了 Facebook 和 Twitter 的發文功能。 ]]></description>
        <link>https://www.appcoda.com.tw/social-framework-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b345</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Thu, 24 Mar 2016 17:57:18 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/03/social-framework-intro.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Firebase 入門：用 Swift 創建一個簡單的社交 App ]]></title>
        <description><![CDATA[ 在眾多 BaaSs 之中，表現最佳和最受歡迎的是 Google Firebase。事實上，Firebase 有著優良的效能、實施性和維護性。Firebase 最為人所知的一個重要特點，就是它是完全以 JSON 為存儲格式的實時數據庫。在數據庫中的任何改變都會立即同步到所有連接該數據庫的客戶端和設備。換句話說，Firebase 有超乎想像的快速，幾乎任何數據都是實時刷新的。  Firebase 支援用戶驗證以及存儲，所有數據通過安全的 SSL 進行傳輸。用戶驗證可以透過郵箱和密碼，或者 Facebook、Twitter、Github、Google 或自定認證等方式。  除了 iOS，Firebase SDK 還支援 Android 和 JavaScript。所有平台都可以共用同一個數據庫， Firebase 還會自動調整 App 的大小。  但擁有所有這些特性的 Firebase 的物超所值。會不會有什麼隱藏的陷阱在其中呢？  確實沒有任何陷阱。 ]]></description>
        <link>https://www.appcoda.com.tw/firebase/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b344</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Matthew Maher ]]></dc:creator>
        <pubDate>Mon, 14 Mar 2016 23:37:39 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/03/firebase-ios.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 開發：如何使用 Xcode 7 進行單元測試 ]]></title>
        <description><![CDATA[ 甚至情況更差一點，就是找來找去也找不到錯在哪裡。不論你是程式新手或者已經有點經驗的開發者，定期編寫單元測試 (unit testing) 會讓你的程式碼更可靠、安全，當問題出現的時候更能除錯就更容易。  幸運地，Xcode 7 和 Swift 都支援單元測試。雖然使用單元測試不代表錯誤不會出現，但把程式碼分隔為細小的單元，從而逐一檢測每個單元都是正確地執行，此舉有助除錯偵測。  顧名思義，單元測試是逐一為每個單元的程式碼去建立指定的功能測試，以確保每一個單元都能通過。而成功通過的單元程式碼會在旁邊顯示綠色標誌。若果因為某些因素而測試失敗，Xcode 就會直接顯示測試結果為失敗 (failed)。這個標示能讓你找到有問題的程式碼的位置，也方便了追查出錯的原因。  範例專案概要 首先，先我為你準備好的Starting Project下載。這是一個十分簡單的百份比運算 App（舉例：80 x 10％＝ 8 )。  這個百份比運算器比較簡單。你所需要去看的文檔就只有 ViewController.swift。文檔中，簡潔的程式碼附帶了註釋，讀起來更清晰明白。  文檔中有五個 IBOutlets：一個是屏幕上標題之外的每一個 ]]></description>
        <link>https://www.appcoda.com.tw/unit-testing-swift/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b343</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Maxime Defauw ]]></dc:creator>
        <pubDate>Sat, 05 Mar 2016 19:29:09 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/03/unit-testing-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Core Image 介紹: 圖像濾鏡應用 ]]></title>
        <description><![CDATA[ 伴隨著這強大的圖像過濾功能，Core Image 包含的 APIs 有臉部偵測 (face detection)，圖像自動增強 (automatic image enhancements) 及透過混合使用多重濾鏡製作出與別不同的濾鏡效果。  在本教程中將會向你介紹 Core Image 的基本功能，並展示一些優良實作和簡單技巧去提升表現。  範例App 在本教程中，我們會透過建立一個簡單的 App 為圖像加入濾鏡。開始之前，先準備一些圖像並保存在一個文件夾之內。  首先，在 Xcode 中使用 Single View Application 模板去創建一個新的 iOS 程式：    把專案命名為 Core Image 並選擇 Swift 為程式語言。然後前往 Main.storyboard 及新增一個 UIImageView。接著加入 Auto Layout 約束條件 ]]></description>
        <link>https://www.appcoda.com.tw/core-image-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b342</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Pranjal Satija ]]></dc:creator>
        <pubDate>Wed, 02 Mar 2016 06:06:27 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/03/core-image-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何使用 Xcode Targets 去管理開發和上線建置 (Development and Production Builds) ]]></title>
        <description><![CDATA[ 對初學者而言，或許會有疑惑為什麼要把 App 的數據庫和開發環境分開處理。原因很簡單，就是為了日後 App 建立新特性或延續開發時需要在開發版本和現存版本分別進行測試。一般軟件開發都需要在不同的環境進行不同版本的測試。而 App 的開發版本通常都會和發佈版本使用不同的數據庫（或其他系統，例如分析系統）。這是其中一個原因解釋了為什麼要為不同環境使用不同的伺務器和數據庫。開發者也會在測試階段使用虛擬圖像或數據。在測試或開發環境下，不難看到 &#8220;test comment（測試評論）&#8221;，&#8221;argharghargh（隨意亂打的東西）&#8221; 和 &#8220;one more test comment（再來一個測試評論）&#8221;。當然，這些你都不會希望真實用戶看到的。假若你的 App 使用分析系統，在測試階段便可能要傳送成千上萬的事件，這些測試用的數據都是不能與正式上線的數據混淆在一起。這就是為什麼會建議把開發和上線環境分別處理的原因。  當使用兩個不同的環境時，App 需要得到指示如何連接正確的環境。一個比較流行的方法是在在主要的 app delegate 中定義一個總體變數， ]]></description>
        <link>https://www.appcoda.com.tw/using-xcode-targets/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b341</guid>
        <category><![CDATA[ Objective-C ]]></category>
        <dc:creator><![CDATA[ Eugene Trapeznikov ]]></dc:creator>
        <pubDate>Sat, 20 Feb 2016 05:26:27 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/02/xcode-targets.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 新手指南：為 iOS Apps 添加推送通知（Push Notifications） ]]></title>
        <description><![CDATA[ 當 App 不運行的時候，如果有某些事情發生时需要提醒用戶關注，那就需要用到某種通知技術。作為一個 iOS 開發者，我們知道 iOS 支持兩種通知：本地通知和推送（或者遠程）通知。前者是由 App 自己註冊和發起的，實現起來要相对簡單。實際上，我們可以在這裡 和 這裡找到一堆較早的教程，是關於本地通知的。  推送通知則不是由 App 自己發起的。它由另外的服務（叫做提供者）發起，這個服務通常是指某個 web 服務器，它通常會同時發給多台設備。通過推送通知，編寫 App 的人可以向用戶發送信息，可以隨機發送，也可以有計劃地發送，可以定制消息體，也可以使用默認的消息體。請看這裡，你會對蘋果推送通知有一個很好的了解。  從一個提供者發送一條消息到一個或多個設備，需要使用一個強制的通道。那就是蘋果推送通知服務器，或APN 服務器。由這些服務器將推送通知按指定路線發送到正確的設備，在提供者提交後幾秒， ]]></description>
        <link>https://www.appcoda.com.tw/push-notification-ios/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b340</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Thu, 04 Feb 2016 20:53:11 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/02/push-notifications.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何利用 Core Spotlight 框架增加 iOS Apps 的曝光率 ]]></title>
        <description><![CDATA[ iOS 9 新增的 Search APIs 提供多個全新的APIs，而 Core Spotlight (CS) 是其中的一個框架，為開發者們顯著提升了App的可發現性，可見性和易用性，這是在歷代iOS版本中前所未見的。Search APIs 還讓使用者能夠更新更快地接觸開發者的App，加強了二者的連繫性。在iOS 9 中，除了 Core Spotlight 外，還有其他新的搜索特性，當中包括（這裡只作介紹）：  新的方法和屬性存在與 NSUserActivity 類中（這是用來存儲App以便在稍後時間復原程式）。 web markup 使網頁內容在裝置中被搜索到。 universal links 讓App直接啟動網頁鏈接。 本文不會詳述以上三點，讓我們先聚焦在 Core Spotlight 框架的細節。開始之前，到底 Core Spotlight 是什麼呢。  過往 iOS ]]></description>
        <link>https://www.appcoda.com.tw/core-spotlight-framework/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b33f</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Sat, 30 Jan 2016 00:16:02 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/01/core-spotlight-framework.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 教學：如何用 Foursquare API 和 Realm 打造一個咖啡店 App ]]></title>
        <description><![CDATA[ 在本教學中，你將學會使用到如下技能：  Swift、Xcode 和 Interface Builder (自動佈局、約束和storyboard) Realm，一個輕量級的 Core Data 封裝，用於本地數據庫。 Foursquare，用 「Das Quadrat」 庫來訪問 Foursquare 的 REST API。 CocoaPods 和 Geolocation 這個 App 會以你當前位置為中心，從 Foursquare 抓取以此為中心 500&#42;500 米範圍內的地標信息。然後用一個地圖視圖（MKMapView)和表格視圖（UITableView)來顯示這些數據。並使用 Realm 來篩選數據，並在閉包中對數據進行排序。  你可以從 GitHub 上下載完整的的源程式碼和 Xcode ]]></description>
        <link>https://www.appcoda.com.tw/foursquare-realm-swift/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b33e</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ De Vries Reinder ]]></dc:creator>
        <pubDate>Mon, 25 Jan 2016 00:09:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/01/foursquare-api.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 並行程式設計: 初探 NSOperation 和 Dispatch Queues ]]></title>
        <description><![CDATA[ 一旦人們真正了解了這些危險，這些所謂的危險其實不值一提。並行程式設計是一柄雙刃劍，你必須學會如何正確地使用和掌握它。它能讓你編寫出高效、快速和響應式的 App，但同時，如果使用不當，它會給你的 App 帶來一場災難。所以，在我們開始編寫任何並行程式代碼之前，首先來思考一下：你為什麼需要並行程式設計？以及你應該使用哪個 API 來解決問題？在 iOS 中，我們可以使用不同的 API。本教程將介紹其中兩個最常用的 API ── NSOperation 和 Dispatch Queue。  為什麼需要並行程式設計? 假設你擁有豐富的 iOS 編程經驗。但不管你要創建的是何種類型的 App，你都應該知道並行編程能讓你的 App 跑得更快和更加具有響應式風格。這裡，我來介紹幾個關於學習和使用並行編程的好處：  充分利用 iOS 設備的硬件性能: 現在所有的 iOS 設備都具有多個內核，這就允許開發者以並行的方式同時執行多個任務。你應當充分利用這一特點來享受硬件所帶來的便利。 用戶體驗更佳: ]]></description>
        <link>https://www.appcoda.com.tw/ios-concurrency/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b33d</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Ghareeb Hossam ]]></dc:creator>
        <pubDate>Sat, 16 Jan 2016 07:19:29 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/01/ios-concurrency-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ tvOS 簡介：打造你的第一支 tvOS App ]]></title>
        <description><![CDATA[ 這類的發佈通常會振奮開發者社群。隨著新版 Apple TV 的到來， Apple 也發佈了一個全新的、基於 iOS 的作業系統，叫做 tvOS 。 tvOS 基本上就是 iOS 的改進版。使用的是相同的框架，以及我們所熟悉的程式語言（沒錯，就是 Swift ！），我們將透過撰寫幾個簡單的 App 來探索 tvOS 。  深入淺出 tvOS tvOS 乃基於 iOS 。事實上，許多你使用過的框架，可能也都適用於 tvOS 。不過 Apple 也刪除了一些框架（最明顯的就是 WebKit ），所以 tvOS 仍然有別於 iOS 。  Apple 支援 2 種類型的 tvOS App 。第 ]]></description>
        <link>https://www.appcoda.com.tw/tvos-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b33c</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Gregg Mojica ]]></dc:creator>
        <pubDate>Mon, 11 Jan 2016 08:55:59 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/01/tvos-intro.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何在 iOS Apps 創建展開式 UITableView ]]></title>
        <description><![CDATA[ 顧名思義，一個展開式 UITableView 是這樣一種表視圖，它「允許」其單元格（cell)展開或者收起，顯示或者隱藏，而在一般的表視圖中，它們的單元格只能是顯示的狀態。當我們需要收集一些簡單的數據或者根據用戶的意願顯示/隱藏某些內容時，創建展開式 UITableView 是一種不錯的選擇。這樣，我們就沒有必要僅僅為了讓用戶輸入一些數據就創建新的 View Controller，無論如何我們都只需要呆在同一個 View Controller 裡面，即當前的 View Controller 中。例如，通過展開式的 cell，我們顯示或隱藏一個用於給用戶輸入信息的表單，在顯示或隱藏這個表單時，根本不需要離開當前的 View Controller。  是否採用或者不採用展開式的 UITableView，完全取決於 App 的性質。但是，只要是通過子類化UITableViewCell和自定義xib文件的方式來定製 cell 的情況，App 的外觀就不會是什麼問題。因此，歸根結底， ]]></description>
        <link>https://www.appcoda.com.tw/expandable-table-view/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b33b</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Sun, 03 Jan 2016 07:40:08 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2016/01/expandable-uitableview.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 新手系列之三：Auto Layout 介紹 ]]></title>
        <description><![CDATA[ 本文摘自《iOS 9 App程式設計實力超進化實戰攻略》一書，博碩授權轉載。這是Swift 新手系列的第三篇文章，如果你還沒閱讀之前所發表的文章，可從這裡開始。 Auto Layout是一個以約束條件為基礎的佈局系統（constraint-based layout system），它讓開發者能夠開發一個能自我調整型的UI，可以依照螢幕的尺寸以及裝置的方向來調整。有些初學者會覺得這個部分很難，而儘量避免去使用它，但請相信我，當你習慣之後，Auto Layout會成為你之後無比仰賴、非常重要的App開發工具。  自從iPhone 6與iPhone 6 Plus釋出之後，Apple的iPhone有了不同的螢幕尺寸，包含3.5英吋、4英吋、4.7英吋與5.5英吋顯示器。如果沒有使用Auto Layout，想建立一個支援各種螢幕解析度的App將會非常困難。然而，從Xcode 6開始，使用Auto Layout來設計使用者介面，已經是不可避免了。這也是我想要在本書一開始的地方，先教你學會Auto Layout，而不是直接寫App程式碼的原因。本章以及接下來的章節，我會協助你建立「 ]]></description>
        <link>https://www.appcoda.com.tw/auto-layout/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b33a</guid>
        <category><![CDATA[ Auto Layout ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Sun, 27 Dec 2015 02:13:10 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/12/auto-layout-0-1.png" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 新手系列之二：進階說明Hello World App的原理 ]]></title>
        <description><![CDATA[ 本文摘自《iOS 9 App程式設計實力超進化實戰攻略》一書，博碩授權轉載。 到目前為止，你依照步驟一步一步建立了Hello World App。整章讀完後想必心中會出現了幾個疑問：  Storyboard中的視圖控制器是如何與ViewController.swift檔內的ViewController類別（class）建立連結。 showMessage()方法中的那段程式碼是什麼意思呢？它要如何告知iOS顯示一個HelloWorld訊息？ @IBAction這個關鍵字是做什麼用的？ 「Hello World」按鈕背後藏了什麼？按鈕是如何偵測到按下事件，並進而觸發showMessage()方法？ 「Run」按鈕在Xcode中是如何運作的？所謂編譯一個App是什麼意思？ 之前，我想要你專注在探索與熟悉Xcode的開發環境，所以一開始沒有對以上的問題多作說明，然而了解程式碼背後運作的細節與掌握iOS程式的基礎觀念是有其必要性的。有些技術性的觀念，或許會有點難懂，尤其是針對之前毫無程式開發背景的初學者而言更是。但是，其實不必擔心，這只是開始而已。當你照著後續的章節繼續學習，寫了更多的程式碼之後，你便會更了解iOS程式語言。你現在最需要做的一件事就是盡心學習。  好的，從生活中舉個真實的例子來說明。  例如：電視遙控器，可以很方便地以無線方式遠端調整聲音。當想要更換頻道，你只要簡單地按下頻道號碼即可。如果想要提高音量， ]]></description>
        <link>https://www.appcoda.com.tw/hello-world-app-explained/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b339</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Thu, 24 Dec 2015 08:01:47 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/12/hw-explained-0-2.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 新手系列之一: 打造你的第一個 iOS App ]]></title>
        <description><![CDATA[ 在閱讀任何程式書籍之前，想必你聽過「Hello World」程式，這是所有程式的初學者要去建立的第一個程式。其是一個非常簡單的程式，就是在裝置螢幕上顯示「Hello World」。在程式世界中，這是一項傳統。因此，讓我們遵循傳統，使用 Xcode 來建立一個「Hello World」App。 ]]></description>
        <link>https://www.appcoda.com.tw/hello-world-app-swift/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b338</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Wed, 23 Dec 2015 18:07:35 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/12/helloworld-0.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 3D Touch及Quick Actions簡介：建構一個數位電子秤App ]]></title>
        <description><![CDATA[ 你會否好奇，為什麼Force Touch 在iPhone上面突然改名叫3D Touch？不用奇怪，你也不是第一個提出疑問的人。不久之前Craig Federighi(註:蘋果公司軟體工程高階副總裁，主管iOS軟體及Mac軟體)，很顯然的也搞不清楚這個這個技術應有的名子，所以在產品發表會的簡報上面，介紹這個新技術的時候提到的3D Touch，但這名詞卻從此一鳴驚人。其實叫做Force Touch 本身也沒有什麼問題啦?只我們已經有太多星際大戰相關的笑話了不是嗎？  譯者注：1. 把原本XY軸的二維平面觸控技術，加入了Z軸的概念，使的得觸控技術多了 XYZ軸的三維觸控思維。 2. Force在星際大戰裡面代表的是原力的意思，最經典的對白就是 Use the Force, Luke!。 雖然在名詞上我們做了一些探討跟著墨，也知道Force Touch跟3D Touch在技術上的本質是相同的。但在實際的應用上3D Touch跟Force Touch 仍然是有區別的！很顯然的3D Touch 在偵測按壓力道的能力比起Force Touch更為敏銳。相較於Force Touch，3D Touch在分辨按壓力度的基礎上可以依照不同的按壓力道加以辨識並定義出更多的級別。 ]]></description>
        <link>https://www.appcoda.com.tw/3d-touch-tutorial/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b337</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Maxime Defauw ]]></dc:creator>
        <pubDate>Sat, 19 Dec 2015 01:28:38 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/12/3d-touch-scale-app.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 初學Swift：愛恨交織的 Optional ]]></title>
        <description><![CDATA[ 這篇文章原自《邂逅Swift你需要知道的 n 件事》一書，由作者Grady Zhuo授權轉載。本文會講到：  為什麼要有 Optional 怎麼使用 Optional 如何操作?和! 如果遇到一連串 Optional 的情況，我要不斷解開才能操作嗎？ 一、一切都要從 nil 與 crash 開始說起 在多數的語言中，一個 nil 值的出現，可以輕易的讓程式產生錯誤，進而被系統強制關閉。一般使用者叫他閃退；開發者叫他崩潰。如何防止 nil 造成的錯誤，各式各樣的檢查早已不可或缺，但無論如何防堵， nil 總是在程式運行階段 (runtime) 才會發生，無法在編譯時期 (compile time) 就檢查出 nil 發生問題的可能性，也沒有穩定的規則可以找出 nil 的出沒之處。 ]]></description>
        <link>https://www.appcoda.com.tw/swift-optional/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b336</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Grady Zhuo ]]></dc:creator>
        <pubDate>Sun, 13 Dec 2015 07:42:44 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/12/swift-optional-imac.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 初探 iOS App 瘦身功能 (App Thinning) ]]></title>
        <description><![CDATA[ App 瘦身(App Thinning)是在 WWDC 上發佈的一項嶄新技術，它將會改變整個下載程序。人們總是抱怨與電信服務商的資費方案合約、抱怨 iOS 裝置的空間有限、抱怨網路下載的速度不夠快，而這些都是 App 瘦身之所以值得我們學習的地方。 ]]></description>
        <link>https://www.appcoda.com.tw/app-thinning/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b334</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gregg Mojica ]]></dc:creator>
        <pubDate>Sun, 29 Nov 2015 00:02:39 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/11/app-thinning.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift JSON教學：如何利用 Data Taipei 公開資料庫建立 App ]]></title>
        <description><![CDATA[ 首先，我們打開瀏覽器，輸入 data.taipei 進入新版的台北市政府資料開放平台，然後我們搜尋&#8221;動物園&#8221;。    在搜尋結果中，找到台北市立動物園_動物資料。    進入之後，在使用資料的下拉選單中，點選 API 進入。    此時，我們會得到兩個網址，這次的練習要使用的就是第二個網址。  資料集的說明 &#8211; http://data.taipei/opendata/datalist/apiAccess?scope=datasetMetadataSearch&amp;q=id:5cb73231-b741-48b3-bec3-2ef57bb10029 台北市立動物園_動物資料 &#8211; http://data.taipei/opendata/datalist/apiAccess?scope=resourceAquire&amp;rid=a3e2b221-75e0-45c1-8f97-75acbd43d613   點擊第二個網址進入後， ]]></description>
        <link>https://www.appcoda.com.tw/json-data-taipei-tutorial/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b333</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Ryan Chung ]]></dc:creator>
        <pubDate>Mon, 16 Nov 2015 17:49:52 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/11/data-taipei-open-data.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 使用 YouTube API 打造影音搜尋 App ]]></title>
        <description><![CDATA[ 因為 Google API 和服務也能夠運用於行動平台，所以我們當然不能放過這個好好研究一番的機會，而且事實上，我們在過去也曾處理過 Google 技術。舉例而言，這篇文章講的是 Google Maps SDK 。而在本文中，我們將首度揭露 YouTube API 這項全然不同的服務。  YouTube API 非常容易使用，不過有些事情你最好先知道一下，否則使用起來可能會感覺卡卡的。請容我給你一點提示：我們將不會使用任何 SDK 或者 iOS 本身的程式庫。相反地，我們只會送出簡單的 HTTP 要求（其實就是 GET 要求），向 Google 擷取資料。結果會是 JSON 格式，所以你最好先知道一下 JSON 格式的資料如何編碼。你不必是 JSON 專家；只需要了解其格式即可。 ]]></description>
        <link>https://www.appcoda.com.tw/youtube-api-ios-tutorial/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b332</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Thu, 12 Nov 2015 23:25:40 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/11/youtube-api-demo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 窺探 watchOS 2 中的 Watch Connectivity ]]></title>
        <description><![CDATA[ 開心之餘，這也代表著在手機與手錶之間的溝通方式有了改變，而這正是我們要為大家所介紹的新功能Watch Connectivity。  首先，什麼是Watch Connectivity？ Watch Connectivity為 watchOS 2中的一個新framework，他提供了裝置之間多種不同的溝通方式，有別於上一篇我們利用資料共享App Groups的方式去做溝通，現在有了更快速且直接的方式來進行資料溝通。  在裝置溝通上，在過去 watchOS 中只有一種預設的方式openParentApplication，詳見官方文件。   Watch Connectivity Session &#8211; WCSession 在我們使用 Watch Connectivity 之前，我們必須為 App 建立 Watch Connectivity Session，WCSession便提供了傳送、接收、監控狀態等函式供我們使用。  if WCSession.isSupported() {      let session = WCSession.defaultSession()      session.delegate = self       session.activateSession( ]]></description>
        <link>https://www.appcoda.com.tw/watchos2-watch-connectivity/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b331</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Max Chen ]]></dc:creator>
        <pubDate>Tue, 03 Nov 2015 06:17:50 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/11/watchos2-wcsession.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何利用UISearchController添加搜尋功能並打造客製化搜尋列 ]]></title>
        <description><![CDATA[ 隨著iOS 8的到來, 有些事情變得不一樣. 首先, UISearchDisplayController 已經被棄用了,雖然在Xcode內的Interface Builder&#8217;s中的控制器元件庫內(controls collection)，UISearchDisplayController裡面還是一個能可用的控制器元件。一個名為 UISearchController的新控制器已經出現並取代這個位子。儘管這一切朝向這樣的變化，但我們可以看到在Interface Builder的控制器元件庫內(controls collection)卻不存在所對應的虛擬控制器(visual control)。很顯然的，這個元件需要被初始化(initialized)跟做一些程式化的設定(configured programmatically)，這是非常簡單的工作，你等等就會看見。    除了上面的改變,另外一個有趣的觀點是對於 tableview datasource 的搜尋。 iOS SDK 提供一個預先定義好的搜尋列(search bar),而這個搜尋列適用於多種狀況。然而，隨者App的UI因為設計的需求發展而需要高度的客製化。這個預設的搜尋列的外觀跟格式也許不再適合App的整體UI設計跟需要。在這種狀況下， 搜尋列必須要能夠被適當的客製化，能讓整體的功能與設計能成融入為app的生態系統(ecosystem)。   所以， ]]></description>
        <link>https://www.appcoda.com.tw/custom-search-bar-tutorial/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b330</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Sun, 25 Oct 2015 22:31:14 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/10/custom-search-bar.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ UIScrollView 滾動視圖初學者指南 ]]></title>
        <description><![CDATA[ 在iOS中，滾動視圖（scroll view）是用來瀏覽無法在整個畫面容下的其他內容。滾動視圖有兩個主要用途：  提供使用者拖曳至他們想要呈現的內容區域 提供使用者使用手指縮放手勢來對所呈現的內容放大或縮小 在iOS App的常見控制 &#8211; UITableView &#8211; 是一個UIScrollView的子類別，提供了一個可以檢視視圖內容大於本身畫面的一個很棒的方式。  本篇教學中，我們會來看各種UIScrollView的觀念、其中包括以程式建立一個滾動視圖與介面建構器（Interface Builder）、滾動（scrolling）與縮放（zooming）、以及巢狀滾動視圖（nested scroll views）。    往下閱讀之前，先 下載這個專案的原始檔案， 其中包括了我們要在這篇教學中使用的所有檔案。  以程式建立滾動視圖 滾動視圖就跟其他視圖的建立方式一樣，不是以程式來建立就是在介面建構器中建立，只要稍微設置一下，就可以完成滾動的功能。  滾動視圖就跟其他視圖一樣是以插進去一個控制器或視圖階層（view hierarchy）中來建立。只要兩個步驟就可以完成滾動視圖的設置：  你必須要設定contentSize 屬性為滾動內容的大小。這裏指定滾動區域的大小。 Y你必須加入可以顯示以及可以讓滾動視圖滾動的視圖。這些視圖主要作為內容的呈現。 你可以幫你的程式任意設置視覺上的提示，像是垂直與水平滾動指示器、拖曳反彈以及滾動的方向限制。 ]]></description>
        <link>https://www.appcoda.com.tw/uiscrollview-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b32f</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Joyce Echessa ]]></dc:creator>
        <pubDate>Thu, 15 Oct 2015 19:35:34 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/10/uiscrollview-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 9 快速上手：搜尋 API 與 SFSafariViewController ]]></title>
        <description><![CDATA[ 搜尋 API 提供了許多有趣的新方法，可以與使用者互動。在 iOS 9 中， Apple 優化了 Spotlight ，加入令人驚豔的新功能，可以為更多的內容建立索引。舉例而言，使用者可以透過 Spotlight 搜尋網頁內容或者 App 內部的資料。此外也可以透過熱門關鍵字輕易地開啟 App （無論關鍵字是否包含 App 的名稱）！搜尋 API 可以幫助你達成這些任務。  對於開發者而言，在 iOS 9 中實現搜尋將是一大特色。隨著 iOS 9 的發佈，現在正是學習的最佳時刻。 Apple 在搜尋產業默默無聞，但是隨著 iOS 9 提供了搜尋 API ，情況可能就此改觀！  iOS 9 SDK 中新的搜尋 API ]]></description>
        <link>https://www.appcoda.com.tw/search-api-sfsafariviewcontroller/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b32e</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gregg Mojica ]]></dc:creator>
        <pubDate>Fri, 09 Oct 2015 00:21:54 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/10/search-api.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 增加營收獲利！為你的 App 加入內購買功能 (In-App Purchase) ]]></title>
        <description><![CDATA[ 不可否認的是，最近這幾年，大部分開發者的收入都是仰賴 App 內購買。如果仔細想的話，答案更是不言自明。對於開發者而言， IAP 是一套很棒的工具，而對於使用者來說，則提供了很棒的選擇。有了 IAP ，兩造雙方都非常開心；開發者可以在 App Store 上面販售功能有限的免費 App ，以便吸引更多的使用者來嘗鮮，並且整合 IAP 以便在使用者購買後可以解鎖使用額外的內容。另一方面，使用者可以只購買他們感興趣的內容或功能，對於不想使用的部分則完全無須付費。經過證實，這項策略確實讓幾乎所有使用 IAP 的開發者都賺到了錢。    在本文中，一如預期，我打算示範如何在 App 中整合 IAP 。你將會看到這一點也不困難，而且針對每支 App 你需要採取的步驟幾乎都是一樣的。簡單地說，下列是在 iOS App 當中整合 IAP 所需要的步驟：  在 Xcode ]]></description>
        <link>https://www.appcoda.com.tw/in-app-purchase-tutorial/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b32d</guid>
        <category><![CDATA[ in-app purchase ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Fri, 02 Oct 2015 07:04:31 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/10/in-app-purchase.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 一起動手做一個簡單的Apple Watch筆記App ]]></title>
        <description><![CDATA[ 我們將會開發一隻很簡單的 iPhone + Watch App，你可以在iPhone App輸入簡訊然後顯示在Apple Watch上。從中理解如何利用NSUserDefaults 及 App Group 功能把iPhone app的資料分享至 Watch App。  註：本範例使用Xcode 7.0 (7A220) 與 iOS 9 開發。 新增一個單一畫面樣板的專案 事不宜遲，首先打開Xcode，選擇 Create a new Xcode project。點選 iOS > Application > Single View Application，然後按 Next。    專案名稱(Product Name)取名為WatchSimpleNote、組織名稱(Organization Name)與Organization Identifier( ]]></description>
        <link>https://www.appcoda.com.tw/apple-watch-e7-ad-86-e8-a8-98-app-group/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b32c</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Max Chen ]]></dc:creator>
        <pubDate>Fri, 25 Sep 2015 01:28:58 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/09/watch-app-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 開發教學：如何使用 Parse 建立註冊和登入的功能 ]]></title>
        <description><![CDATA[ 現在就來一睹 Rumiya 的文章吧。  Parse 是與平台無關的第三方「雲端 App 解決方案」。你可以從這裡得知更多訊息。本文屬於進階的程式設計教學，將會介紹如何在 Swift 專案中運用 Parse ，並且將使用者登入資訊存放到 Parse 雲端儲存中。    開始使用 我已經預備好包含 Storyboard 和視圖控制器類別的專案範本了。此專案已經把登入（ Login ）、註冊（ Sign Up ）、重設密碼（ Reset Password ）和主畫面（ Home Screen ）等頁面都設計好了。    執行此專案應該會在主畫面上看到一個簡單的使用者設定檔。在開始之前，不妨花幾分鐘的時間先讓你自己熟悉一下這份專案範本。  加入 Parse 框架 首先，登入你的 Parse 帳號或是免費註冊新的帳號。來到 Dashboard 頁面，點擊「 Create a new ]]></description>
        <link>https://www.appcoda.com.tw/login-signup-parse-swift/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b32b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Tue, 22 Sep 2015 02:20:19 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/09/login-parse-demo1.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Watch App 開發新手篇：以 WatchKit 建立選單表格 App ]]></title>
        <description><![CDATA[ 我們將會在未來的系列文章中介紹更多有關 WatchOS 2 的功能特色。不過今天，讓我們先從一些最基本的開始吧。  在本文中，你將學會如何在 Apple Watch 上製作選單表格（ Selectable Table ） App 。我們將打造呈現 5 個國家的簡單表格。選取個別選項將會顯示關於該國家的更多資訊，例如首都。    註：此篇教學利用Xcode 6.4建立，如使用Xcode 7，有部份程序未必適用。 建立專案並新增目標 讓我們從建立新的 Xcode 專案開始。開啟 Xcode ，然後選取「 Create a new Xcode project 」。 Xcode 將會顯示一份可供新專案使用的範本清單。選取「 Single View Application 」。    當 Xcode 提示要為專案命名時，請輸入「 Countries 」。確定選擇的語言是「 ]]></description>
        <link>https://www.appcoda.com.tw/selectable-table-watchkit/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b32a</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Maxime Defauw ]]></dc:creator>
        <pubDate>Mon, 21 Sep 2015 00:02:35 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/09/watchapp-intro.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ QR Code 產生器 App：以 Core Image 濾波器製作QR Code條碼 ]]></title>
        <description><![CDATA[ 我在 Appcoda 曾經寫過一篇文章，是關於如何在 iOS 中建立 QR Code （二維條碼）閱讀器的教學。當時那篇文章的程式是用 Objective-C 撰寫而成的，因為 Swift 是後來才有的。隨後，我的好友 Simon 寫了一篇新的文章，針對 Swift 這個新語言的廣大粉絲進行全面改寫。等到這個主題的首篇文章發表出來時，基於廣告和行銷等目的之 QR Code 已經逐漸開始被廣泛運用，於是許多開發者都忙於開發自己的 QR Code 閱讀器。 QR Code 在今日已經無所不在；在報章雜誌、電視、 T 恤、廣告標語、網站上（這份清單還可以更長）都看得到其蹤影。另一方面，在 App Store 上面也有數不清的 QR Code ]]></description>
        <link>https://www.appcoda.com.tw/qr-code-generator-tutorial/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b329</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Sun, 13 Sep 2015 05:20:54 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/09/qr-code-generator1.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 利用IBDesignable和IBInspectable建立客製化元件 ]]></title>
        <description><![CDATA[ 自Xcode 6 開始，iOS開發人員可以利用 IBDesignable 和 IBInspectable 功能建構客製化 control 並即時在 Interface Builder 預覽變更。很明顯的，這是一個提升生產力的巨大優勢。  在這個單元裡面，我們將為大家介紹 IBDesignable 和 IBInspectable，並且向大家展示如何來利用這個新功能。要瞭解並學習一個新的功能，除了建立一個Demo程式來學習之外，我認為應該沒有其他更好的方式了。所以，在本章節我們將一起建立一個名為Rainbow客製化介面來學習本章的內容。    IBDesignable 和 IBInspectable 隨著 IBDesignable 和 IBInspectable的推出，開發人員被允許可以建立interface (或view) 並即時地顯示在Interface Builder內。 在一般情況下，要應用這個新功能，在Swift裡面你只需要建立新的類別並繼承自UIView或UIControl的類別，然後在建立的新類別名稱前面加上一個@IBDesignable的前綴字串即可。 如果你使用的是Objective-C，你需要使用IB_DESIGNABLE來代替。 Swift的範例程式如下  @IBDesignable  class Rainbow: UIView ]]></description>
        <link>https://www.appcoda.com.tw/ibdesignable-ibinspectable/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b328</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Ziad Tamim ]]></dc:creator>
        <pubDate>Thu, 10 Sep 2015 00:33:44 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/09/ibinspectable.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何使用自訂 Segue 實現視圖轉場動畫 ]]></title>
        <description><![CDATA[ 當iOS 第五版（iOS 5）釋出後，它針對使用者介面的設計導入了一個全新且革命性的方式，也就是 storyboard的採用，這也表示了現行的設計邏輯要從頭改變。在iOS 5以前，每一個控制器（controller）幾乎都跟著一個介面建構器（Interface Builder）檔，也就是所謂的nib或xib檔，其原理很簡單：每一個視圖控制器假設都會設計一個相對應的 nib 檔，而所有的 nib 檔的組合就是應用程式的全部介面。在某種情況，這種開發方式很方便，因為開發者在設計該功能時只要將重點放在該介面即可，但是另一面卻也會因此產生許多的檔案，甚至開發者無法檢視整個App介面的開發全貌。    有了 Storyboard 之後，所有的一切都成為歷史，因為這個方法已經幾乎被所有的開發社群所使用。相對於舊的技術，Storyboard提供至少了三種顯著的好處：  整個介面只有用一個檔案即可。專案內的全部檔案數量急遽減少，尤其對於大型專案來說更是可觀。也可以依照需求另外使用nib檔，單純作為輔助用的視圖。 開發者可以隨時檢視App的介面與流程。 在視圖控制器（以介面設計的專有名詞來說，稱作場景）間的轉換（或者稱作過場，transition），以及它們之間所進行的所有事情， ]]></description>
        <link>https://www.appcoda.com.tw/beginners-guide-animated-segue/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b327</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Fri, 04 Sep 2015 07:41:42 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/08/custom-segue-featured-1024.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 教學：如何加入自訂的下拉更新元件 (Pull to Refresh) ]]></title>
        <description><![CDATA[ 如你所知，下拉更新元件其實就是當資料正在載入而表格視圖的內容尚未更新時，出現在表格視圖上方的活動視圖指示器（通常還會伴隨著一些簡短的訊息）。事實上，下拉更新元件有點像是當使用者在等待擷取和顯示新內容時所看到的「請稍候……」訊息。在使用了此類元件的 App 當中，大家最熟知的莫過於「郵件」了，透過將電子郵件表格視圖往下拖曳，便可以重新整理郵件的內容。此元件首次登場是在 iOS 6 ，從那時候起這招便廣泛被運用在無數的 App 當中。  假使你曾經想要在自己的 App 當中使用下拉更新元件，並且曾經搜尋過如何導入此元件的作法，那麼你一定要閱讀 Simon 的文章，裡頭有所有你需要知道的一切。在本文中，我們想要探討的是下拉更新的其他面向：如何建立自訂的下拉更新元件。這個主題可以讓你在這個小歸小但是卻十分重要的細節上套用不同的樣式，為你的 App 加入全新的風貌。  那麼，在下面幾個小節中，你將可以看到新增任何自訂的內容與動畫的技巧，以便「取代」預設的下拉更新元件。請留意，稍候將只會示範步驟及邏輯；實際的自訂內容必須由你自己填入，說得更精確一點，必須由你自己想像。現在就讓我們開始吧，很快你就能夠建立自訂的下拉更新內容了！ ]]></description>
        <link>https://www.appcoda.com.tw/custom-pull-to-refresh/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b326</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Fri, 28 Aug 2015 08:37:00 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/08/pull-to-refresh-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 旋轉吧！使用UIPickerView元件與Emoji繪文字打造拉霸機App ]]></title>
        <description><![CDATA[ 這些年來，由於貼圖的盛行，許多人在聊天的過程中，喜歡用圖形來表達，用得好，有些時候甚至比文字更能傳達心中的意思。而Emoji繪文字也在這一波潮流中水漲船高，更多人注意到它的存在！現在就讓我們利用Emoji繪文字結合UIPickerView元件，自製一個小小拉霸機吧！    新增一個單一畫面樣板的專案 首先打開Xcode，選擇 Create a new Xcode project。點選 iOS > Application > Single View Application，然後按 Next。    專案名稱(Product Name)取名為SlotMachine、組織名稱(Organization Name)與Organization Identifier(組織識別)請自行命名、選擇Swift程式語言、Devices裝置為Universal，下面三個選項此範例不會使用到，無需勾選，之後按 Next 繼續。    佈置UIPickerView元件 專案建立後，請點擊左方Project Navigator區中的Main.storyboard，我們會在畫面上放入UIPickerView、 ]]></description>
        <link>https://www.appcoda.com.tw/uipickerview-tutorial/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b325</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Ryan Chung ]]></dc:creator>
        <pubDate>Fri, 21 Aug 2015 22:44:19 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/08/slot-machines.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ iOS 9 新功能 : 堆疊視圖介紹 (Stack Views) ]]></title>
        <description><![CDATA[ 堆疊視圖一個簡化的介面元件，提供了不論是以欄或者以列為佈局方式的集合視圖。對於嵌入堆疊視圖內的視圖，你不再需要去定義 Auto Layout 約束條件（constraints）。這個堆疊視圖會處理它的子視圖（subview）的佈局，並自動幫你採用佈局約束條件。換言之，這些子視圖可以適應不同的螢幕尺寸。另外，你可以在另一個堆疊視圖來嵌入一個堆疊視圖，如此一來你可以利用堆疊視圖建構更複雜的使用者介面。不要誤解我的意思，這並不表示你都不需要去處理Auto Layout。你還是需要對堆疊視圖定義 Layout 的約束條件。這只是幫你省下針對每一個 UI 建立約束條件的時間，讓你可以從佈局中超級輕鬆的新增或移除視圖。  Xcode 7 提供兩個使用堆疊視圖的方式。你可以從元件庫拖曳一個Stack View（horizontal / vertical），並置於 Storyboard中。然後拖曳一些視圖元件，像是標籤，按鈕、圖像視圖（image view）至堆疊視圖。另外，你也可以在自動佈局欄上使用 Stack 選項。你只要選取兩個或者更多的視圖物件，並點擊 Stack ]]></description>
        <link>https://www.appcoda.com.tw/stack-views-intro/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b324</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Thu, 13 Aug 2015 22:32:59 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/08/stack-view-intro.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Xcode 6 錦囊妙技：向量圖片、程式碼片段、加入自訂的字型，以及更多提升生產力的秘技 ]]></title>
        <description><![CDATA[ 身為一名開發者，無論是專精，或者只是為了好玩，毫無疑問都需要耗費很多時間坐在螢幕前面，直到做完專案為止。程式設計工具用起來舒服比什麼都重要，因為這些工具營造了你的虛擬工作空間，而且「每件事」都定義了工作的條件。當我說「每件事」，我指的是：從所選擇的工具應用程式，乃至最令人意想不到的設定。友善的環境無疑可以提昇效率；既不友善又無法自訂的程式設計工具只會帶來反效果，大幅降低生產力。舉例而言，你可能會覺得工作時只是面對同樣的「冷冰冰」工具，而無法改變其顯示設定，或者你覺得眼睛有點酸，因為字體太小，又或者只能夠使用滑鼠，因為無法自訂按鍵組合。  希望你明白我的用意，請容我說得更清楚一些。身為 iOS （或許也包含 Mac ）開發者，非常可能都是使用 Xcode 來作為開發專案的主要 IDE （ Integrated Development Environment， 整合開發環境）。我之所以說非常可能，是因為還有 Xcode 的替代工具。不過因為絕大多數的開發者都是使用 Xcode ，所以我將鎖定在 Xcode ]]></description>
        <link>https://www.appcoda.com.tw/xcode6-tips-tricks/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b323</guid>
        <category><![CDATA[ Objective-C ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Mon, 10 Aug 2015 01:06:47 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/08/xcode-6-tips.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 2 初學者指南 ]]></title>
        <description><![CDATA[ 去年 Apple 帶來了 Swift，一個為針對 iOS 以及 OS 的全新程式語言。當它第一次宣布時，就跟其他開發者一樣。我非常的興奮，因為這宣稱是一個既快且安全的語言。跟預期一樣，這家公司今年在 WWDC 導入了 Swift 2。這篇初學者指南會讓你了解一下它帶來了哪些新的功能。  Swift 2今年一樣快速前進中。我們認為 Swift 是未來20年作為應用程式以及系統的主力程式語言，我們認為它他應該可以在任何地方都能用到且每一個人都能使用它。  &#8211; Craig Federighi， Apple的軟體工程資深副總  其中Swift 2一項最大的改變是它將在2015年底變成開源。倘若你錯過了 WWDC 的一些重點，或者你消息落後的話，你沒看錯：Swift準備開源。 這是一件大事。Apple會在 OSI 標準許可證（OSI compliant license）底下公開釋出Swift 原始碼，包含編譯器（compiler）與標準函式庫( ]]></description>
        <link>https://www.appcoda.com.tw/swift2/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b322</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Mon, 03 Aug 2015 03:42:11 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/08/swift2-beginner-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ React Native 簡介：以 JavaScript 建構 iOS App ]]></title>
        <description><![CDATA[ 我們已經看過 Titanium 和 PhoneGap 等框架，它們同樣能夠讓開發者使用網頁技術來建構行動 App 。這是一項優勢，因為開發者能夠將同一套技能同時運用於網頁及行動 App 的開發。不僅如此，同樣的基礎程式（ Code Base ）幾乎不必修改就能夠支援多個平台──亦即所謂的「只需撰寫一次，到處皆可執行」（ Write Once, Run Everywhere ）。但是一提到使用這些框架所建構的 App 的效能，它們的缺點就暴露出來了，所以儘管提供了一些很吸引人的功能，但是開發者仍然偏好建構原生的 App 。    React Native 與那些框架不同。 PhoneGap 之類的框架是將網頁內容包裝成 WebView ，形成 UI 元素，看起來其實跟原生的有些不一樣，而 React Native 則是使用 iOS 或 Android 原生支援的 JavaScript 元件， ]]></description>
        <link>https://www.appcoda.com.tw/react-native-introduction/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b321</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Joyce Echessa ]]></dc:creator>
        <pubDate>Sat, 18 Jul 2015 08:01:11 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/07/react-native-demo.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Swift 教學：如何使用iOS Charts API 製作漂亮的圖表 ]]></title>
        <description><![CDATA[ 在這個章節，我們來看要如何使用由 Daniel Cohen Gindi所開發的ios-charts library 。 ios-charts 是由 Philipp Jahoda所建立，是非常受歡迎Android的函式庫，MPAndroidChart 的iOS接口。 有了這個函式庫，你可以在App中，快速且容易地加入各種型態的圖表。只要幾行程式，你就擁有能夠運作且可互動的圖表，並且可以高度客製化。    函式庫的主要核心包括：  8種不同的圖表型式 兩個軸向的縮放（以觸控手勢、分別對軸做縮放，或者以pinch手勢做縮放） 拖曳/平移（以觸控手勢） 圖表結合（線圖、長條圖、離散圖、K綫圖、氣泡圖） 雙（分開的）Y軸 手指畫圖（以觸控手勢將值畫進圖表） 將值特別標示（以客製化的跳出視圖來顯示） 多個/分離的軸 儲存圖表至照片膠卷 / 以PNG/JPEG來輸出 預定義的顏色模板 圖例（可自動產生、客製化） ]]></description>
        <link>https://www.appcoda.com.tw/ios-charts-api-tutorial/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b320</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Joyce Echessa ]]></dc:creator>
        <pubDate>Fri, 17 Jul 2015 19:27:16 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/07/ios-charts-api-desk.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 以Parse與Swift建構一個像Instagram一樣的App ]]></title>
        <description><![CDATA[ 這篇教學解釋了如何由Parse來建立後台的方法。我們會建立一個像Instagram 一樣的App，其中包含了這些功能：  從Parse 載入資料，將它存在local 端。 儲存資料至Parse，並將其寫入至雲端。 投票或者是對喜愛的貓咪圖片按讚。 這個App完全由Swift所建構，Swift是Apple作為iOS App的新程式語言。Parse還沒有以Swift來編寫，所以我們會建立一個Bridging Header來處理它。    以下將是你會學到的部分：  利用Parse 雲來做資料的存取 在Swift 專案中以Cocoapods整合Objective-C 框架（framework） 以介面建構器（Interface Builder）設定視圖以及一個自訂的表格視圖cell。 從頭開始以Swift來編寫整個App。 實作Auto Layout 與約束條件。 使用手勢辨識器（gesture recognizers），optionals、條件式（condition）、屬性（property）、outlet與動作（action）。 我們開始吧 首先，確定你已經有了Parse帳號。你可以至Parse.com 以Facebook、Google+或者 ]]></description>
        <link>https://www.appcoda.com.tw/instagram-app-parse-swift/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b31c</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ De Vries Reinder ]]></dc:creator>
        <pubDate>Sat, 11 Jul 2015 05:20:11 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/07/parse-instagram-app.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 建立一個像Medium App的下滑選單 ]]></title>
        <description><![CDATA[ 當一個使用者按下選單按鈕，主畫面下滑揭示了選單。如下圖是在Medium App中使用到下滑選單的畫面。    倘若你前面的章節有跟著一起進行，你應該對客製視圖控制器轉換有了基本的了解。本章，你將運用你所學到的來建造一個生動的下滑選單。  依照慣例，我想你不需要從頭建立專案，建議可以使用我們準備好的範例模板來開始，它包含了Storyboard 以及視圖控制器類別。你將會發現兩個視圖控制器。一個是主畫面（嵌入至導覽控制器中），而另一個導覽選單。倘若你執行專案，這個App應該會出現一個主畫面加上一些虛構的資料。 繼續往下進行之前，先花個幾分鐘瀏覽一下這個程式模板以熟悉一下專案內容。  以Modal 方式呈現選單 好的，我們開始吧。首先打開 Main.storyboard檔。你應該會找到兩個還沒有連上任何Segue的表格視圖控制器，為了在使用者按下選單按鈕時能帶出選單，按住control鍵不放，從選單按鈕拖曳至選單表格視圖控制器（menu table view controller）。將按鈕釋放，然後選取「present modally」作為Segue的動作。    倘若你執行專案，這個選單將會以modal視圖的方式來呈現。為了關閉（unwind）選單，我們會加入unwind Segue。  打開NewsTableViewController.swift ]]></description>
        <link>https://www.appcoda.com.tw/slide-down-menu-navigation/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b31b</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Mon, 06 Jul 2015 01:01:39 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/07/slide-down-menu-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何使用AVFoundation進行QR Code掃描 ]]></title>
        <description><![CDATA[ 首先，什麼是QR Code？我相信你們大多數都已經知道什麼是QR Code了。倘若你還沒有聽過，看一下以下的這張圖，這就是QR Code。    提示: 你可以自己建立 QR Code，只要去QR Code Monkey網站便可以自己做一個。 QR（Quick Response 的縮寫）Code 是由 Denso 所開發的一個二維條碼（2-dimensional bar code）。原來的用途是設計作為製造業做零件追蹤用，QR Code 近幾年已經逐漸在消費市場流行，主要是將 URL 編碼，作為網頁導引或提供市場資訊用。不像傳統所熟悉的條碼，QR Code 包含了水平與垂直方向的資訊。也因此造就它可以擁有較多數字與文字資料量的儲存能力。我不想要在這邊討論QR Code 的技術細項。倘若你有興趣的話，你可以至 QR Code 的官方網站學習更多相關的知識。  因為 iPhone ]]></description>
        <link>https://www.appcoda.com.tw/qr-code-reader-swift/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b31a</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Simon Ng ]]></dc:creator>
        <pubDate>Sun, 05 Jul 2015 05:24:57 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/07/qr-code-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ Auto Layout 入門教學 ]]></title>
        <description><![CDATA[ 什麼地方出錯了？該怎麼做修正呢？問題的解答就是Auto Layout。Auto Layout 是一個以約束條件為基礎的佈局系統，它可以讓開發者建立一個可以因應不同螢幕尺寸與裝置（device）方向而調整的自適應介面（adaptive interface），我們很少在我們的教學文章中談到Auto Layout。有些初學者覺得它很難學習所以盡量避免去使用到它。Apple在2014年秋天推出了4.7英吋與5.5英吋的iPhone。如果沒有Auto Layout，對你來說要建構一個能夠支援所有螢幕尺寸的App是一件非常困難的事。    我知道有許多討厭Auto Layout的開發者，也許是這是一個新的技術，或者第一次使用時感到很難使用。不管你是否相信，倘若你習慣它，它會變成最棒的工具之一，沒有它的話，反而開發不了App了。在這篇教學中，我會簡短的介紹Auto Layout。  為什麼需要Auto Layout？ Auto Layout 是讓開發者在元素間定義其關聯性以建立使用者介面的一種方式。它提供了一個描述視圖（view）如何與UI控制（control）間相關聯的一種彈性且強大的系統。透過Auto Layout的使用，你可以對佈局擁有高度的控制權，以進行更多的客製化，並產生完美的介面。  自動佈局是一個很神奇的工具，它能做到以之前的技術連作夢都無法辦到的事情。 ]]></description>
        <link>https://www.appcoda.com.tw/introduction-auto-layout/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b319</guid>
        <category><![CDATA[ Auto Layout ]]></category>
        <dc:creator><![CDATA[ Ziad Tamim ]]></dc:creator>
        <pubDate>Sat, 04 Jul 2015 00:41:39 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/07/auto-layout-introduction.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 使用多點連線 (MPC )框架與 Swift 打造聊天 App ]]></title>
        <description><![CDATA[ 你可能會好奇為何我要帶來這個有點舊的主題，而不是探討 iOS 8 所導入的新功能。因為我有下列 3 個理由：  許多讀者寫信給我，詢問如何透過之前文章提到過的多點連線來實現各式各樣的任務。在回覆這些信件的時候，我發現自己老早就注意到有這種需求的存在；人們希望可以更了解多點連線，但是卻始終找不到資料。 在前面幾篇文章當中，我的實作是基於使用 iOS SDK 中既有的預設視圖控制器來邀請其他同伴並且建立連線。我發現人們傾向親手實作這項功能，這也正是我撰寫本文的目的。 我認為使用 Swift 來實作 MPC 功能非常具有實用性與教育意義。   多點連線框架的存在，已經為廣大的開發者證明了誕生新點子的可能性。透過如此簡單的方式來連結裝置，本身具有非常大的吸引力，而這正是程式設計師想要將多點連線框架整合到他們自己的 App 當中的原因。但是如果你從未使用過 MPC 框架，我必須先提出警告： MPC 有時候並不像你所想的那麼可靠，這是我過去在做專案時發現的，也曾經有其他開發者跟我反映過。 MPC 同時使用藍牙（ Bluetooth ）和 WiFi 來連結附近（ Nearby ）的裝置，儘管聽起來很不錯而且大有可為， ]]></description>
        <link>https://www.appcoda.com.tw/chat-app-swift-tutorial/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b317</guid>
        <category><![CDATA[ Swift 程式語言 ]]></category>
        <dc:creator><![CDATA[ Gabriel Theodoropoulos ]]></dc:creator>
        <pubDate>Thu, 02 Jul 2015 08:30:07 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/07/mpc-chat-app.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 以Swift建立簡單的視圖動畫 ]]></title>
        <description><![CDATA[ 動畫的使用不只是讓你的App更為有特色，它也可以改善程式整體的使用者體驗。你可以看一下Apple如何在App端使用動畫來改善UX。舉例來說，在相片App，當你從相片集中選取一張照片，照片會展開出來，當你關掉後，它又會縮回去所選的相片集中。這讓你在瀏覽許多圖片時能夠正確的讓你知道你現在所處的位置為何。    Facebook的 Paper也應用很漂亮的動畫來提升App整體的使用者體驗。你選取某篇文章以向上翻轉起來的方式來閱讀。這個動作會將縮圖版本以反向展開，也就是如果將文章往下翻轉，便會縮回原來的縮圖。在這裏，動畫是用來表達App的運作方式，即使是App第一次的使用者，也能很快在不需要教學的狀況下，快速掌握它的使用方式，並找到它的導覽方式。  使用App動畫不只是加入不同使用者體驗，同時也可以讓你的使用者使用起來感動愉快與印象深刻進而會繼續使用它，避免解除App的安裝去尋找App store中更好的App。  在App中要加入動畫，有好幾種方式，有些是使用UIKit Dynamics、層動畫（layer animation）、視圖控制器轉換（view controller transition）或者使用第三方函式庫， 像是Facebook Pop library 或 JNWSpringAnimation 框架（framework）.  在這篇教學文章，我們準備來看一下一些簡單的視圖動畫。 你可以 下載起始專案模板 ，模板是一個在表格視圖中列出教學中所呈現範例的Single ]]></description>
        <link>https://www.appcoda.com.tw/view-animation-in-swift/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b316</guid>
        <category><![CDATA[  ]]></category>
        <dc:creator><![CDATA[ Joyce Echessa ]]></dc:creator>
        <pubDate>Wed, 01 Jul 2015 22:51:11 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/07/view-animations-featured.jpg" medium="image"/>
    </item>
    <item>
        <title><![CDATA[ 如何用Swift建立視圖控制器畫面之間的動畫過場 ]]></title>
        <description><![CDATA[ iOS 7 導入了自訂的視圖控制器過場，可以讓開發者在自己的 App 中建立視圖控制器畫面之間的動畫過場。在本文中，我們將會討論如何實現此功能。此外，我們也會展示如何建立手勢驅動過場，稱為互動式過場（ Interactive Transition ）。在開始之前，請先下載本文將會使用到的 Starter 專案。  開始動手吧 要建立自訂的過場效果，必須採取下列這 3 個步驟：  建立實作了 UIViewControllerAnimatedTransitioning 協定的類別。在其中撰寫實現動畫的程式碼。此類別被稱為動畫控制器。 在呈現（ Present ）視圖控制器之前，必須先為此視圖控制器設定其過場委派。此委派將會取得步驟 1 的動畫控制器的回呼，以便在呈現視圖控制器時使用。 實作此回呼函式，以便傳回步驟 1 的動畫控制器實體。 執行 Starter 專案，將會看到呈現了許多項目清單的表格視圖。導覽列上有一顆 Action 按鈕，當你點擊時，另一個視圖將會以常見的強制回應畫面（ Modal ）方式從下方浮現。 ]]></description>
        <link>https://www.appcoda.com.tw/custom-view-controller-transitions-tutorial/</link>
        <guid isPermaLink="false">626c0c23965cb14c8157b315</guid>
        <category><![CDATA[ iOS App 程式開發 ]]></category>
        <dc:creator><![CDATA[ Joyce Echessa ]]></dc:creator>
        <pubDate>Wed, 01 Jul 2015 22:26:01 +0800</pubDate>
        <media:content url="https://www.appcoda.com.tw/content/images/2015/07/custom-view-transition.jpg" medium="image"/>
    </item>

</channel>
</rss>