let launchedBefore = UserDefaults.standard.bool(forKey: "launchedBefore")
if launchedBefore {
// Code if has launched before
} else {
UserDefaults.standard.set(true, forKey: "launchedBefore")
// Code if not has launched before
}
func establishUserDefaultsHaveBeenVerifed()->Bool{
let defaults = UserDefaults.standard
if let _ = defaults.string(forKey: "userDefaultsHaveBeenVerified"){
print("user defaults were already verified")
return true
}else{
defaults.set(true, forKey: "userDefaultsHaveBeenVerified")
print("verified user defaults for first time since app was installed")
return false
}
}
@UserDefault(key: UDKey.isFirstSession, defaultValue: true)
static var isFirstSession: Bool
func applicationWillTerminate(_ application: UIApplication) {
// When app is terminated, next sessions are not first anymore
UserDefaults.isFirstSession = false
}
什么是@用户默认值:
@propertyWrapper
struct UserDefault<Value> {
let key: String
let defaultValue: Value
var container: UserDefaults = .standard
var wrappedValue: Value {
get {
return container.object(forKey: key) as? Value ?? defaultValue
}
set {
container.set(newValue, forKey: key)
}
}
}
什么是UDKey:
enum UDKey {
static let isFirstSession = "isFirstSession"
}
9条答案
按热度按时间idv4meu81#
Swift 4及更高版本
您可以在任何地方使用它来验证用户是否是第一次看到此视图。
注意:用户重新安装应用并首次启动后,此方法将返回
false
。z6psavjg2#
在Swift 2及更低版本中尝试此操作
bkhjykvo3#
由于卸载应用程序时会清除应用程序的NSUserDefaults,因此您可以尝试在应用程序启动时测试是否存在某个值。
如果该值存在,则表示已安装应用。如果不存在,则表示这是第一次启动应用,您可以设置该值。
n9vozmp44#
SWIFT:
目标-C:
juzqafwq5#
我经常发现
userDefault
无法访问,原因是我的应用中存在一些bugs for Apple data protection策略,因此我更改了策略,使用以下内容检测首次启动pobjuy326#
雨燕5
yyyllmsg7#
Objective-CJon Shier's answer版本:
u4vypkhs8#
对Jonas Deichelmann's答案的语义稍作修改,以澄清以下几点:
ldioqlga9#
当您需要在非首次会话时执行某项操作时(例如,显示费率应用程序):
什么是@用户默认值:
什么是UDKey: