您現在的位置是:首頁 > 運動

SwiftUI入門 - 5.本地快取-@AppStorage

由 思躍喵 發表于 運動2023-01-10
簡介swiftimportSwiftUIstructIndexView:View{ 把是否已經登陸 名稱 isLogin,這個包裝器將會覆蓋預設值,並且它的修改會影響到檢視渲染 其他的使用與 @State 基本一致@AppStora

華為手機怎麼找剪貼簿

置頂

菜鳥入門,各位大佬輕噴,如有謬誤之處歡迎討論建議,也歡迎各位道友與我同行

“不積跬步,無以至千里;不積小流,無以成江海”

SwiftUI入門 - 5.本地快取-@AppStorage

繼續

上文中已經實現了登陸成功過後進行跳轉,然後主頁有一個底部tabbar,並且有todo和setting兩個頁面

接下來我們將實現登陸後將登陸資訊 ( 名稱、是否已經登陸 )的快取,在todo頁面中顯示使用者名稱

並且使這個

登入狀態

在退出APP後再開啟可以保持

最終效果如下

SwiftUI入門 - 5.本地快取-@AppStorage

在這裡插入圖片描述

app快取的基本使用

我們期望可以有一個快取可以全域性持久化儲存我們的資料,如token等

這個快取在退出APP

重新登入後

不消失

並且這個快取在修改時會同步到其它呼叫的地方。

那麼此時應該有 @AppStorage 包裝器出場。

基本使用如下

// IndexView。swift

import

SwiftUI

struct

IndexView

View

{

// 把是否已經登陸

// 名稱 isLogin,這個包裝器將會覆蓋預設值,並且它的修改會影響到檢視渲染

// 其他的使用與 @State 基本一致

@AppStorage

“isLogin”

private

var

isLogin

Bool

=

false

// 顯示提示登陸

@State

private

var

showAlertOrigin

Bool

=

true

// 顯示登陸表單

@State

private

var

showLogin

Bool

=

false

@State

private

var

tabIndex

Int

=

0

// 。。。 省略以下大部分程式碼

}

同時我們將登陸表單頁面裡面的 isLogin 和 userName 屬性改為

// LoginView。swift

@AppStorage

“isLogin”

private

var

isLogin

Bool

=

false

@AppStorage

“userName”

private

var

userName

String

=

“”

並且在登陸成功後不再清空 userName ;

todo 頁面展示使用者名稱

根據我以往的程式設計經驗,各個頁面應當是一個獨立的檔案,以利於組織

所以我們將todo頁面單獨提出來寫

import

SwiftUI

struct

TodoView

View

{

// 是否已經登陸

@AppStorage

“isLogin”

private

var

isLogin

Bool

=

false

// 已經登陸的使用者名稱

@AppStorage

“userName”

private

var

userName

String

=

“”

var

body

some

View

{

VStack

{

Text

isLogin

“歡迎您:

\(userName)

“請登入”

)。

font

(。

title

}

}

}

struct

TodoView_Previews

PreviewProvider

{

static

var

previews

some

View

{

TodoView

()

}

}

總結

1。 本文簡單使用了 @AppStorage 包裝器實現了登陸狀態的保持

2。 並且簡單演示了 userName 的快取

3。 除了登陸保持之外,應當還有登出自動彈出登陸表單功能,下節再探討

推薦文章