将URL保存在UserDefaults中

3

我正在使用'Alamofire'调用API。在我的响应中,我得到了一个网页链接。我将该链接存储到一个变量中。现在,我想将该链接存储到本地数据库中,因此我使用'userdefaults'。但是当我在其他'viewcontroller'中检索该链接时,我的链接发生了变化,网页也无法打开。

let weblink = datastring["Web_Link"] as! String
UserDefaults.standard.set(weblink, forKey: "Link") 

我使用以下内容来处理这些问题

UserDefaults.standard.set(url: URL?, forKey: String) 

在另一个“视图控制器”中

let url = UserDefaults.standard.url(forKey: "Link") 

对于这些,我使用了:
let url = UserDefaults.standard.url(forKey: String)

而我的其他代码是

 let request = URLRequest.init(url: url!)

 self.webview.load(request)

我的网址示例是"https://example.com/",但是当我检索时,URL变成了
'https:/example.com'

我的网页无法打开。我正在使用wkwebview。

2个回答

4
您将URL作为字符串存储,因此可以像这样检索它。
let url = UserDefaults.standard.string(forKey: "Link") 

无法将类型为“String”的值转换为预期的参数类型“URL”,这个错误出现在代码行“let request = URLRequest.init(url: url!)”。 - sohan
将url转换为URL类型。 let request = URLRequest.init(url: URL(string: url!)) - elbert rivas

3

看起来你正在将String值存储在用户默认设置中,然后尝试从UserDefaults获取URL。所以请像下面这样尝试。

let weblink = datastring["Web_Link"] as! String
    
if let url = URL(string: weblink){
        
    UserDefaults.standard.set(url, forKey: "Link")
}

.synchronize()已经过时了,已经有一段时间了...文档中已经解释了,请不要使用它,并且请不要再告诉别人使用它。 - Eric Aya
最近我一直在使用Core Data,所以没有使用UserDefaults。感谢你指出来。我已经编辑了我的回答。很酷。 - Natarajan
感谢您的编辑。问题在于,这不仅过时了,而且可能会出现问题,因为它会强制默认值“等待”所有交易完成后才开始新交易。实际上,这与“立即保存”的方式完全相反。 :) - Eric Aya
同意。我认为,当应用程序移至后台或在终止之前,iOS会自动将更改保存在UserDefaults中。再次感谢 :) - Natarajan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接