首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UserDefaults斯威夫特4

UserDefaults斯威夫特4
EN

Stack Overflow用户
提问于 2018-05-04 06:08:24
回答 2查看 181关注 0票数 0

我对UserDefaults有问题。

代码语言:javascript
复制
import Foundation

class Utility: NSObject {
    func storeBaseDetail(firstname:String,lastname:String,picStr:String,email:String,usrname:String,user_Id:String) {
        UserDefaults.standard.set(firstname, forKey: "firstname")
        UserDefaults.standard.set(lastname, forKey: "lastname")
        UserDefaults.standard.set(picStr, forKey: "picStr")
        UserDefaults.standard.set(email, forKey: "email")
        UserDefaults.standard.set(usrname, forKey: "usrname")
        UserDefaults.standard.set(user_Id, forKey: "id")
        UserDefaults.standard.synchronize()
    }

    func getBaseDetail()->(firstName:String,lastName:String,picStr:String,email:String,usrname:String,user_Id:String){
        return ((UserDefaults.standard.value(forKey: "firstname") as! String),(UserDefaults.standard.value(forKey: "lastname") as! String),(UserDefaults.standard.value(forKey: "picStr") as? String)!,(UserDefaults.standard.value(forKey: "email") as! String),(UserDefaults.standard.value(forKey: "usrname") as! String),(UserDefaults.standard.value(forKey: "id") as! String))
    }

    func storeBaseDetail(firstname:String,lastname:String,picStr:String,email:String,usrname:String,user_Id:String) {
        UserDefaults.standard.set(firstname, forKey: "firstname")
        UserDefaults.standard.set(lastname, forKey: "lastname")
        UserDefaults.standard.set(picStr, forKey: "picStr")
        UserDefaults.standard.set(email, forKey: "email")
        UserDefaults.standard.set(usrname, forKey: "usrname")
        UserDefaults.standard.set(user_Id, forKey: "id")
        UserDefaults.standard.synchronize()
    }

    func getBaseDetail()->(firstName:String,lastName:String,picStr:String,email:String,usrname:String,user_Id:String){
        return ((UserDefaults.standard.value(forKey: "firstname") as! String),(UserDefaults.standard.value(forKey: "lastname") as! String),(UserDefaults.standard.value(forKey: "picStr") as? String)!,(UserDefaults.standard.value(forKey: "email") as! String),(UserDefaults.standard.value(forKey: "usrname") as! String),(UserDefaults.standard.value(forKey: "id") as! String))
    }
}

如果我叫它UserDefaults:

代码语言:javascript
复制
if  Utility().getBaseDetail().firstName != ""{
    userNameLbl.text = "\(Utility().getBaseDetail().firstName) \(Utility().getBaseDetail().lastName)"
}

我知道这个错误:

线程1:致命错误:在展开可选值时意外找到零

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-04 06:59:14

这是避免零值的正确方法,

代码语言:javascript
复制
func getBaseDetail()->(firstName:String?,lastName:String?,picStr:String?,email:String?,usrname:String?,user_Id:String?){
    return ((UserDefaults.standard.value(forKey: "firstname") as? String),(UserDefaults.standard.value(forKey: "lastname") as? String),(UserDefaults.standard.value(forKey: "picStr") as? String),(UserDefaults.standard.value(forKey: "email") as? String),(UserDefaults.standard.value(forKey: "usrname") as? String),(UserDefaults.standard.value(forKey: "id") as? String))
  }

在其他类中,创建实用程序实例,

代码语言:javascript
复制
  let utilityInstance = Utility()

然后通过使用if let获取您的值,

代码语言:javascript
复制
if let emailValue = utilityInstance.getBaseDetail().email{
      print(emailValue)
    } 

所以,如果值在那里,它就会打印,如果没有值,它就会跳过。

票数 0
EN

Stack Overflow用户

发布于 2018-05-04 06:31:07

使用以下方法更改您的功能

代码语言:javascript
复制
func getBaseDetail()->(firstName:String,lastName:String,picStr:String,email:String,usrname:String,user_Id:String){
    return ((UserDefaults.standard.value(forKey: "firstname") as? String ?? ""),(UserDefaults.standard.value(forKey: "lastname") as? String ?? ""),(UserDefaults.standard.value(forKey: "picStr") as? String ?? ""),(UserDefaults.standard.value(forKey: "email") as? String ?? ""),(UserDefaults.standard.value(forKey: "usrname") as? String ?? ""),(UserDefaults.standard.value(forKey: "id") as? String ?? ""))
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50168230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档