麻煩給個讚吧!

Firebase 課程特價中!
這是一本提供給想學 iOS 開發的Blog,想有系統的介紹如何寫 APP ,如果有能幫到其他朋友,那是再好不過了,
我是   申潤五  shenfive@gmail.com  
https://shenfive.wordpress.com/.   有關 macOS 開發改到這

shenfive 發表在 痞客邦 留言(1) 人氣()


我們在撰寫應用時,常為了APP或傳送內容的大小,壓縮資料成 zip 檔,但使用時,就要先行解壓才會有存取的效率。但 macOS 的程式庫中,似乎沒有內建完整的解壓程式庫,還好網路神人很多,有人分享了程式庫,並以 MIT 授權提供出來,讓我們看一下如何使用

首先分享 GitHub 網址 https://github.com/ZipArchive/ZipArchive

shenfive 發表在 痞客邦 留言(0) 人氣()

螢幕快照 2017-06-13 下午3.11.46.png

寫 iOS 和 macOS/OS X 的程式,有許多相同與不同的地方,相同的是程式語言,不同的是元件與資料來源/架構等。由於 iOS 是 sandBox 程式,只能抓取雲端檔案或照片等,但 macOS 是可以開啟一個本機檔案來修改撰寫,這時就需要一個檔案選取器了,但在元件選取器上搜尋了 "FilePicker" 沒有發現相關的資料,上網研究了一下,原來是要用 NSOpenPanel 這個物件來抓取檔案,記錄如下:
原則上,最簡單的設定方式,只要建立後啟動就可以了,以下是它的語法

shenfive 發表在 痞客邦 留言(0) 人氣()

Objective-C ,,我們常用 Category 來擴充現有的 ClassSwift 有個很相似的語法叫extension 它不但可以擴充 class 也適用於 Value Type的項目,請參考以下案例:

extension Int{

    func checkIfOdd() -> String {

        var answer = "不知"

        if( self % 2 == 1){

shenfive 發表在 痞客邦 留言(1) 人氣()

字串與字元

字串

Swift 原則上都使用 String 型。不再使用 char Objective-C 常用的 NSString, NSString 比較的話, Swift String NSString 更為方便好用

Swift String型別與 Foundation NSString類別進行了無縫橋接。如果你利用 Cocoa Cocoa Touch 中的 Foundation Framework 進行工作。所有NSString API 都可以呼叫你創建的任意String型別的值。

字串通常我們String Literals 的方式產生,字面翻成字符,也就是用文字表示的一種方法,最書最前面的 Hello World 就是一個實例,最簡單的 Literals 就是把要產生的字串雙引號中間,例如

shenfive 發表在 痞客邦 留言(0) 人氣()

數值類型

整數

Swift Int 在沒有指定容量的的情況下, 會依據作業系統決定為 32bit Int32 64bit Int64, Swift 也支援 8/16 bit Int8/16 與不帶負數的 UInt, 所以保留字一共有

  • Int

  • Int8

shenfive 發表在 痞客邦 留言(0) 人氣()

Swift 在宣告變數時, 可宣告為變數或常數, 差別就在其值是否可以變動。在許多時候為了許多原因, 我們會宣告物件為不能變動的常數。

需要計算的數值類型, 通常使用變數來宣告, 而參考類型的物件, 多半用常數來宣告, 雖然常數無法改變他的值, 但可以設定性與呼叫方法, 所以在實際撰寫時, 也會為了減少錯誤, 而使用常數來宣告物件。


變數與常數的宣告使用兩個不同的關鍵字 var let。宣告變數時, 我們使用 var, 而宣告常數時, 我們使用 let,例如宣告一個整數:

shenfive 發表在 痞客邦 留言(0) 人氣()

Hello Swift

依學語言的慣例,我們寫個 Hello Swift 程式,順便學一下Swift的輸出文字法方法,以下就是 Swift Hello World

print("hello Swift")

你沒有看錯,就這樣,沒有其他的東西,這還是要輸出到Consol,若是要回傳到其他程式,只要這樣就可以了

"hello Swift"

shenfive 發表在 痞客邦 留言(0) 人氣()

Swift 是一個程式語言, 當初設計的目的就是 Apple 用來取代 Objective-C 用來開發 macOS iOS 等系統使用。

Objective-C 是一個歷史悠久的語言, 賈伯斯在1998 年創立NeXTSETP 就把該語言做為主要開發語言, 一直到 NeXT Software 併入 Apple 之後, OS X 一直使用該語言做為主要開發語言。

Objective-C 為一 OOC 語言, 當初設計是要做為 C 語言的完全子集合, 也就是說 C 語言在完全不修改的情形下, 就可和Objective-C 混用。事實上 Obj-C 在編譯階段是先轉換成C語言, 再由C語言的編譯器完成執行檔。可以說Objective-C C 是緊繫在一起。

但正是因為這種關係, Apple 在發展 Obj-C , 就會有一定程度的限制, 如在記憶管理, 指標, 物件, 資料類型限制等。舉例來說, Swift 原則上所有的變數, 預設都禁止存放 nil ( 就是其他語言的null), 用來減少可能的程式錯誤(這就是常見的 iOS 程式因計設不良而閃退主要原因之一), 但受限於 C 相容性, int 就會在宣告時就會是有預設值的, 而不是要求開發者去指定其值。這種特性與類似的功能, 在微軟的 C# JavaScript, 是早就有的特性, Objective-C 受限於C相容性, 一直無法實作, 但在Swift , 是完全沒有問題的。

但另一方面, 因為沒有了限制, 許多在 Objective-C , 只能由 NS 程式庫實作的特性, 也漸漸納到了語言本身, 如在 Objective-C , 字串我們幾乎都用 NSString 而不是 C語言中的 char[] 字串, 但在Swift 中有提供 String 類型, 而不需用到 NSString 這也讓開源的 Swift 未來有機會發展到其他平台, Apple 也將語言核心 Open Source 將核心物件移至語言庫中, 表示未來 Swift 也可以實作在後台的程式, 目前己得到 IBM 等公司的支持, 目前己可運行在 Linux , 甚至提供了一個Web Send Box 讓大家透過網頁就可以學習 Swift

shenfive 發表在 痞客邦 留言(0) 人氣()


緣起

文章例表
http://shenfive.pixnet.net/blog/category/list/3140665

事情是這樣的,我本身是一個 Objective-C 開發人員,工作雖然與 iOS 開發相關,但卻不是專職在 Code上,對我來說,興趣的成份大於工作的需要。在 2014 年首度聴聞 Swift 發表時,就己知這是一條必走的路,也試者去看一些 Swift 相關書藉。其網路上資料不少,正確一點的說法其實是資料太多,但對己經學過Objective-C的人來說,看資料是有點無趣的,因為在 Swift 的教材資料中,大多是針對程式開發初學者,或者是其他領域進入的人,有很多 iOS 重覆的概念會覺得有點過度重覆而有跳過的想法,但許多觀念就穿插在其中,又要回頭去一大段文件中,找出Objective-C沒有的概念,實在浪費時間。

shenfive 發表在 痞客邦 留言(0) 人氣()

螢幕快照 2016-10-31 上午11.41.16.png

前一篇,我們己經引入了 SDK,接下來,要做的事情是帳號密碼認證。若還沒看過,請先參考前篇完成引入SDK 的部份
http://shenfive.pixnet.net/blog/post/220664811-%E4%BD%BF%E7%94%A8-firebase--with-swift%2c--%EF%BC%881-%29%EF%BC%8C%E7%B0%A1%E4%BB%8B%E8%88%87%E5%AE%89%E8%A3%9Dsdk

我們要在這兒做幾個事情:

1.  新建立帳號,使用電子郵件與密碼,並進行電子郵件確認使用者

shenfive 發表在 痞客邦 留言(2) 人氣()

Objective C/Swift 的 portocol 其實就是 Java 的 interfaces.

portocal / Delegate 其實就是在實作 interfaces, 幾乎沒有不同

但有趣的是,其中的差異並非在設計的差異,而在實作的差異,

iOS 設計是以物件代理人為單位設計,以一個清單為例,是在 UITableView 設計一組 各式協議,然後以 class 種類宣告協議,稱作代理人(Delegate)

https://developer.apple.com/reference/uikit/uitableviewdelegate?language=objc

shenfive 發表在 痞客邦 留言(1) 人氣()

Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。