Проблема заключается в том, что когда браузер встречает закрывающий тег </script>
внутри открытого тега <script>
, независимо от контекста, в котором он используется, он завершает там тег сценария. Есть несколько способов избежать этого.
/
в теге закрытия script
: var script = '<script async src="//somesite.com/feed/livetrend.js"><\/script>';
<script>
/*<!--*/
var script = '<script async src="//somesite.com/feed/livetrend.js"></script>';
/*-->*/
</script>
Конечно, перемещение JavaScript во внешний файл вообще позволит избежать этой проблемы это может быть не предпочтительнее.
Чаще всего я вижу использование разработчиком codeable
, здесь я использую пользователя в качестве примера:
YourDataModel.swift
struct User: Codable {
var userId: String = ""
var name: String = ""
var profileImageData: Data? }
UserDefaults .swift
import Foundation
extension UserDefaults {
/// The current user of the application, see `./Models/User.swift`
var currentUser: User? {
get {
guard let userData = self.object(forKey: #function) as? Data else { return nil }
return try? JSONDecoder().decode(User.self, from: userData)
}
set {
guard let newuser = newValue else { return }
if let userData = try? JSONEncoder().encode(newuser) {
self.set(userData, forKey: #function)
}
}
}
}
Преобразовать данные в данные json ... #function
- это имя функции или значения, т. е.
// For the case the user doesn't yet exist.
if ( UserDefaults.standard.currentUser == nil ) {
// Create a new user
user = User()
// Generate an id for the user, using a uuid.
user?.userId = UUID().uuidString
} else {
// otherwise, fetch the user from user defaults.
user = UserDefaults.standard.currentUser
}