您現在的位置是:首頁 > 運動
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。 除了登陸保持之外,應當還有登出自動彈出登陸表單功能,下節再探討
推薦文章
- 專訪航空航天科學家:《流浪地球2》太空電梯等場景能實現嗎?
”陳梓鈞的航空航天題材科幻小說集《閃耀》在看過《流浪地球2》後,陳梓鈞告訴紅星新聞記者,他最大的驚歎同樣來自於影片中的“太空電梯”:“我看了它的設計草圖(由MORE VFX、黃天禹、王志堅、王元卓等人設計),三維建模的細節豐富而真實,令人震...
- 三國志11:蜀國真正的五虎將其實是這五位!趙雲馬超也得往後稍稍
一般來說武力值超高的武將智力普遍會偏低,但關羽竟然能達到75,魔免能力也相當不錯,可謂三國第一神將...
- 流浪貓咪不慎闖入猞猁園,每日靠著撒嬌生活,相伴12年甜如蜜!
也許是猞猁真把三花貓當小天使了,把自己心愛的玩具都讓給了三花貓咪...