您現在的位置是:首頁 > 運動
SwiftUI入門 - 5.本地快取-@AppStorage
華為手機怎麼找剪貼簿
置頂
菜鳥入門,各位大佬輕噴,如有謬誤之處歡迎討論建議,也歡迎各位道友與我同行
“不積跬步,無以至千里;不積小流,無以成江海”
繼續
上文中已經實現了登陸成功過後進行跳轉,然後主頁有一個底部tabbar,並且有todo和setting兩個頁面
接下來我們將實現登陸後將登陸資訊 ( 名稱、是否已經登陸 )的快取,在todo頁面中顯示使用者名稱
並且使這個
登入狀態
在退出APP後再開啟可以保持
最終效果如下
在這裡插入圖片描述
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。 除了登陸保持之外,應當還有登出自動彈出登陸表單功能,下節再探討
推薦文章
- 姚策兒子未徹底改姓?熊磊曬一家三口名字引熱議,楷楷仍是姚家姓
有些人認為九江房地產的事情還沒有解決,所以他們不能改變他們兒子的名字...
- 嶽敏君:“幸福”像“花人”綻放
”“大笑人”“紅彤彤”“笑咧咧”,這樣的形象與那個年代有關,與平質且隱喻化的傳統文化有關,更與嶽敏君在上世紀七八十年代感知體驗過的生活有關...
- 《待到山花爛漫時》第75章:一頓不吃能餓死她?
接下來的幾天,沈言悅都沒有搭理蕭臨琛,她受到程寒的邀請,去了鄰市看一個知名畫家許匯甄的畫展...