国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Swift-19-基礎(chǔ)入門

這篇具有很好參考價(jià)值的文章主要介紹了Swift-19-基礎(chǔ)入門。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

從本章開始大概用10篇左右文章介紹下Swift語言的基本用法。

簡介

Objective-C作為一門比較老的語言, 缺少很多現(xiàn)代語言所具備的高級特性。Swift是目標(biāo)是比C,C++, ObjC更安全可靠,從而減少開發(fā)者對在應(yīng)用運(yùn)行時(shí)出錯(cuò)的代碼進(jìn)行調(diào)試的時(shí)間成本。本系列課程做為Mac OS應(yīng)用開發(fā)的一個(gè)子專題,在這個(gè)專題中筆者會(huì)詳細(xì)介紹下Swift程序語法。

在同一項(xiàng)目中這兩種語言可以同時(shí)匯編,正常情況下這兩種語言可以相互調(diào)用,從Swift調(diào)用ObjectiveC時(shí)兼容性比較好,反之有些會(huì)出現(xiàn)一些問題,但還是不太建議在同一個(gè)項(xiàng)目中同時(shí)使用兩種語言來開發(fā)。

如果您對ObjectiveC非常了解的話,建議對照著來學(xué)習(xí),這樣會(huì)更容易理解,也有助于您對這兩種不同語言的把控。

目錄大綱

下面是一個(gè)擬的一個(gè)大綱,暫時(shí)不包含SwiftUI的內(nèi)容。

  1. 工具和語法:工具和類型
  2. 基礎(chǔ)知識:條件語句、數(shù)、switch、循環(huán)、字符串、空類型、
  3. 容器和函數(shù):數(shù)組、字典、集合、函數(shù)、閉包
  4. 枚舉、結(jié)構(gòu)體和類:枚舉、結(jié)構(gòu)體和類、屬性、初始化、值類型和引用類型
  5. 高級編程:協(xié)議、異常、擴(kuò)展、泛型、內(nèi)存管理
  6. 事件驅(qū)動(dòng)的應(yīng)用:Cocoa應(yīng)用、IOS應(yīng)用

創(chuàng)建簡單工程

此專題的學(xué)習(xí)中,我們還是使用XCode工具,筆者的Xcode版本為Version 13.4.1 (13F100),不同的XCode版本的界面會(huì)有少許的變化,文中的截圖可能略有差異,但應(yīng)該變化不大。

創(chuàng)建playground工程

Xcode提供了下類似python語言的Jutyper Notebook功能,叫做playground,整個(gè)基礎(chǔ)部分都會(huì)使用playground來學(xué)習(xí)。在Xcode中會(huì)有4個(gè)選項(xiàng),一般選擇Blank即可:
Swift-19-基礎(chǔ)入門,MacOS,swift,藍(lán)橋杯,開發(fā)語言,objective-c,xcode,macos,ios

  • blank:空白文檔,只引入了最基礎(chǔ)的Cocoa框架;
  • Game:引入了游戲套件,省去了從blank文檔創(chuàng)建基礎(chǔ)框架的過程;
  • Map:引入了地圖套件,目的同Game一樣;
  • Single View:引入了SwiftUI套件,學(xué)習(xí)SwiftUI時(shí)使用;

創(chuàng)建好后,主界面如下:
Swift-19-基礎(chǔ)入門,MacOS,swift,藍(lán)橋杯,開發(fā)語言,objective-c,xcode,macos,ios
界面非常簡單,從左到右依次是:源文件瀏覽區(qū)、源碼編輯區(qū)、運(yùn)行結(jié)果區(qū);

import Cocoa

var greeting = "Hello, playground"

多說一點(diǎn),playground工程也不單單只是一個(gè)文件,它也是一種多文件的組合,只是對外暴露出了一個(gè)接口,打開包以后可看到它里面也包含了一系列的目錄和文件:
Swift-19-基礎(chǔ)入門,MacOS,swift,藍(lán)橋杯,開發(fā)語言,objective-c,xcode,macos,ios

創(chuàng)建Command Line Tool工程

如果您不喜歡playground,也可以使用project的方式來練習(xí)本專題的代碼,區(qū)別不大。方法是在XCode工具中選擇新建Command Line Tool模板,然后按如下界面配置。
Swift-19-基礎(chǔ)入門,MacOS,swift,藍(lán)橋杯,開發(fā)語言,objective-c,xcode,macos,ios
在創(chuàng)建工程時(shí)注意選擇工程類型和編程語言,界面如下:
Swift-19-基礎(chǔ)入門,MacOS,swift,藍(lán)橋杯,開發(fā)語言,objective-c,xcode,macos,ios
main.swift:程序運(yùn)行主函數(shù),默認(rèn)只有兩行代碼

import Foundation

print("Hello, World!")
  1. 兩種工程不同的示例中的import引用不一樣,這個(gè)關(guān)系不大,因?yàn)镃ocoa包含了Function框架;而在基礎(chǔ)部分我們也只會(huì)用到Function框架提供的API;
  2. 在本系列專題中筆者會(huì)使用 playground 工程來講述Swift編程的知識,原因是可以省略好多print()函數(shù);

Swift語言比較惡心的一點(diǎn)是對于每行語句最后的 ;分號并不敏感,純靠縮進(jìn)來識別代碼,做為一個(gè)老java程序員對這一點(diǎn)確實(shí)是習(xí)慣了好長的時(shí)間,估計(jì)是從python語言學(xué)來的吧。

創(chuàng)建OSX應(yīng)用

創(chuàng)建一個(gè)可編輯的文本應(yīng)用

創(chuàng)建工程

Swift-19-基礎(chǔ)入門,MacOS,swift,藍(lán)橋杯,開發(fā)語言,objective-c,xcode,macos,ios

  • 開發(fā)語言選擇:swift
  • UI選擇:storyboards

創(chuàng)建好后工程結(jié)構(gòu),默認(rèn)是一種MVC架構(gòu)的工程模式。
Swift-19-基礎(chǔ)入門,MacOS,swift,藍(lán)橋杯,開發(fā)語言,objective-c,xcode,macos,ios

  • AppDelegate.swift:入口程序
  • ViewController.swift:視圖控制器,相當(dāng)于Controller
  • Document.swift:相當(dāng)于Model
  • Assets.xcassets:應(yīng)用圖標(biāo)和圖片資源庫
  • Main.storyboard:UI圖形界面,相當(dāng)于View
  • Info.plist:應(yīng)用設(shè)置
  • swift2cocoa.entitlements:應(yīng)用發(fā)布和運(yùn)行設(shè)置

準(zhǔn)備工作

設(shè)計(jì)UI界面

打開 Main.storyboard 文件。
Swift-19-基礎(chǔ)入門,MacOS,swift,藍(lán)橋杯,開發(fā)語言,objective-c,xcode,macos,ios

拖動(dòng)UI控件到設(shè)計(jì)面板上
Swift-19-基礎(chǔ)入門,MacOS,swift,藍(lán)橋杯,開發(fā)語言,objective-c,xcode,macos,ios

設(shè)計(jì)視圖控制器

添加一個(gè)文本和兩個(gè)按鈕事件

import Cocoa

class ViewController: NSViewController {

    @IBOutlet var textView: NSTextView!
    
    @IBAction func speakButtonClicked(_ sender: NSButton){
        print("The speak button was clicked")
    }
    
    @IBAction func stopButtonClicked(_ sender: NSButton){
        print("The stop button was clicked")
    }

}

連接控件

方法有很多,主要是拖動(dòng),其中一種拖動(dòng)方式如下圖所示:
Swift-19-基礎(chǔ)入門,MacOS,swift,藍(lán)橋杯,開發(fā)語言,objective-c,xcode,macos,ios
另一個(gè)拖動(dòng)方式,把控件拖到controller上面
Swift-19-基礎(chǔ)入門,MacOS,swift,藍(lán)橋杯,開發(fā)語言,objective-c,xcode,macos,ios

添加功能

語音朗讀

修改Controller代碼

class ViewController: NSViewController {

    @IBOutlet var textView: NSTextView!
    
    let speechSynthesizer = NSSpeechSynthesizer()
    
   var contents:String?{
        get{
            return  textView.string
        }
        set{
            textView.string = newValue ?? ""
        }
    }
    
    @IBAction func speakButtonClick(_ sender:NSButton){
        if(!textView.string.isEmpty){
            speechSyntheesizer.startSpeaking(textView.string)
        }else{
            speechSyntheesizer.startSpeaking("文檔是空的")
            
        }
    }
    
    @IBAction func stopButtonClicked(_ sender: NSButton){
        speechSynthesizer.stopSpeaking()
    }

}

文檔保存

這里稍整理下代碼,把M和C串起來文章來源地址http://www.zghlxwxcb.cn/news/detail-859446.html

Controller
import Cocoa

class ViewController: NSViewController {

    @IBOutlet var textView: NSTextView!
    
    var contents: String? {
        get {
            return textView.string
        }
        set {
            textView.string = newValue
        }
    }
    
    let speechSynthesizer = NSSpeechSynthesizer()
    
    @IBAction func speakButtonClicked(_ sender: NSButton){
        speechSynthesizer.startSpeaking(textView.string)
    }
    
    @IBAction func stopButtonClicked(_ sender: NSButton){
        speechSynthesizer.stopSpeaking()
    }

}
Document
import Cocoa

class Document: NSDocument {

    override init() {
        super.init()
    }
    
    enum Error: Swift.Error, LocalizedError {
        case UTF8Encoding
        case UTF8Decoding

        var failureReason: String? {
            switch self {
            case .UTF8Encoding: return "File cannot be encoded in UTF-8."
            case .UTF8Decoding: return "File is not valid UTF-8."
            }
        }
    }
    
    //文本內(nèi)容
    var contents: String = ""

    //自動(dòng)保存功能
    override class var autosavesInPlace: Bool {
        return true
    }

    //創(chuàng)建新文檔或打開舊文檔時(shí)調(diào)用,負(fù)責(zé)設(shè)置NSWindowController, as!是一個(gè)類型轉(zhuǎn)符,相當(dāng)于強(qiáng)轉(zhuǎn)
    override func makeWindowControllers() {
        let storyboard = NSStoryboard(name: NSStoryboard.Name("Main"), bundle: nil)
        //因?yàn)閣ithIdentifier會(huì)返回很多不同的controller,所以這塊需要強(qiáng)轉(zhuǎn)一下
        let windowController = storyboard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier("Document Window Controller")) as! NSWindowController
        
        //連接controller
        let viewController = windowController.contentViewController as! ViewController
        viewController.contents = contents
        
        self.addWindowController(windowController)
    }

    //保存文檔時(shí)調(diào)用
    override func data(ofType typeName: String) throws -> Data {
        let windowController = windowControllers[0]
        let viewController = windowController.contentViewController as! ViewController
        let contents = viewController.contents ?? ""

        guard let data = contents.data(using: .utf8) else {
            throw Document.Error.UTF8Encoding
        }

        return data
    }

    override func read(from data: Data, ofType typeName: String) throws {
        guard let contents = String(data: data, encoding: .utf8) else {
            throw Document.Error.UTF8Decoding
        }
        self.contents = contents
    }
}

到了這里,關(guān)于Swift-19-基礎(chǔ)入門的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Swift入門基礎(chǔ):構(gòu)造函數(shù)、下標(biāo)、計(jì)算屬性

    Swift入門基礎(chǔ):構(gòu)造函數(shù)、下標(biāo)、計(jì)算屬性

    前文介紹了可選類型和閉包,這兩個(gè)概念在做Object-C時(shí)沒有遇到,轉(zhuǎn)做Swift又必須面對的。當(dāng)然除了上述兩個(gè)概念外,還有構(gòu)造函數(shù)、下標(biāo)、計(jì)算屬性等等。這次我們就分別介紹下。 ? 構(gòu)造函數(shù) 構(gòu)造函數(shù)是一種特殊的函數(shù),主要用途是在創(chuàng)建對象時(shí),初始化對象和分配空間,

    2024年01月17日
    瀏覽(20)
  • iOS開發(fā)Swift-基礎(chǔ)部分

    系統(tǒng)可通過賦初始值進(jìn)行自動(dòng)推斷。 平時(shí)可加可不加,同一行中有兩句話必須加。 Int?????????? UInt(最好不用) Double 64位 很大/高精度情況下使用 15位小數(shù) Float 32位 對精度要求不高的情況下用 6位小數(shù) 十進(jìn)制數(shù) ? 17 二進(jìn)制 0b前綴 0b10001 八進(jìn)制 0o前綴 0o21 十六進(jìn)制 0x前綴

    2024年02月11日
    瀏覽(24)
  • iOS(一):Swift純代碼模式iOS開發(fā)入門教程

    iOS(一):Swift純代碼模式iOS開發(fā)入門教程

    1.修改 AppDelegate.swift 和 ViewController.swift 文件 2.刪除 SceneDelegate.swift 和 Main.storyboard 文件 3.修改如圖所示項(xiàng) 安裝 CocoaPods 初始化項(xiàng)目(添加 Podfile 配置文件) 修改 Podfile 文件 安裝 打開 ExDemoApp.xcworkspace 項(xiàng)目并向 ViewController.swift 添加示例代碼 運(yùn)行效果 安裝 QMUIKit 方式一:觸發(fā)

    2024年02月09日
    瀏覽(28)
  • Swift 單元測試入門

    Swift 單元測試入門

    含義:編程語言中的單元測試是為了確保編寫的代碼按預(yù)期工作。 給定一個(gè)特定的輸入,希望代碼帶有一個(gè)特定的輸出。通過測試代碼,能夠給當(dāng)前的重構(gòu)和發(fā)布建立信心,因?yàn)閷⒛軌虼_保代碼在成功運(yùn)行的測試套件后按預(yù)期工作。 單元測試是運(yùn)行和驗(yàn)證一段代碼(稱為“

    2024年02月11日
    瀏覽(23)
  • swift基礎(chǔ)語法

    swift基礎(chǔ)語法

    參考教程 https://www.runoob.com/swift/swift-data-types.html swift代碼規(guī)范 https://juejin.cn/post/7129465308376465422 必須要有蘋果電腦且安裝Xcode Swift是類型安全的語言,編譯時(shí)會(huì)進(jìn)行類型檢查 可以使用 import 語句引入任何的Objective-C(C語言的嚴(yán)格超集) 創(chuàng)建macOS playground則引入Cocoa,Cocoa由Objec

    2024年01月21日
    瀏覽(135)
  • Swift基礎(chǔ)

    本文是個(gè)比較簡單的學(xué)習(xí)筆記,更詳細(xì)的內(nèi)容見?Swift官方文檔 Swift標(biāo)準(zhǔn)庫用 和 == 運(yùn)算符定義了 、=、=,所以實(shí)現(xiàn) Comparable 的 運(yùn)算符就會(huì)自動(dòng)得到這些運(yùn)算符的實(shí)現(xiàn),實(shí)際上 Comparable 繼承自 Equatable,所以 == 運(yùn)算也是必須實(shí)現(xiàn)的,以下是示例代碼 雖然是講繼承,但代碼中的注

    2024年02月07日
    瀏覽(17)
  • Swift學(xué)習(xí)筆記(一)基礎(chǔ)語法

    Swift學(xué)習(xí)筆記(一)基礎(chǔ)語法

    淺學(xué)一下Swift,這篇筆記做個(gè)記錄 依然是Xcode,關(guān)于Xcode就不多介紹了。 let和var分別用來表示常量和變量,無論是let還是var,作用都是為某個(gè)具體量值取了一個(gè)名字,這種方式叫做量值的聲明。在量值的有效作用域內(nèi),開發(fā)者可以使用這些名稱來獲取具體的量值

    2024年01月17日
    瀏覽(25)
  • iOS開發(fā)Swift-函數(shù)

    ?(1)無參函數(shù) (2)多參函數(shù) (3)無返回值 (4)多重返回值 (5)可選元組返回類型(元組可以是nil) (6)隱式返回的函數(shù) 任一可以被寫成一行return的函數(shù),return(x) + for。 調(diào)用的時(shí)候: 方法名(for: 參數(shù)) (1)指定參數(shù)標(biāo)簽 (2)忽略參數(shù)標(biāo)簽 (3)默認(rèn)參數(shù)值 (4)可變參數(shù) 一個(gè)可變參數(shù)可接受0個(gè)或多

    2024年02月11日
    瀏覽(27)
  • iOS開發(fā)Swift-枚舉

    枚舉:一組相關(guān)的值定義了一個(gè)共同的類型,使你可以在代碼中以類型安全的方式來使用這些值。 原始值:定義枚舉時(shí)被預(yù)先填充的值。 (1)整數(shù)為原始值時(shí),隱式賦值遞增1。未設(shè)置原始值時(shí),默認(rèn)為0,之后遞增1. (2)字符串為原始值,隱式賦值為枚舉成員的名稱。

    2024年02月11日
    瀏覽(28)
  • iOS開發(fā)Swift-閉包

    將很長的閉包表達(dá)式作為最后一個(gè)參數(shù)傳遞給函數(shù),不用寫出他的參數(shù)標(biāo)簽。 嵌套函數(shù)可捕獲其外部函數(shù)所有參數(shù)、變量、常量。 當(dāng)一個(gè)閉包作為一個(gè)參數(shù)傳到一個(gè)函數(shù)中,但閉包在函數(shù)返回之后才被執(zhí)行,則稱閉包逃逸。 標(biāo)注@escaping,表示允許閉包逃逸。 ?包裝傳遞給函數(shù)

    2024年02月11日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包