ParseSwift SDK 中的 ParseKeyValueStore,backingStore 意外发现 nil
ParseKeyValueStore in ParseSwift SDK, backingStore Unexpectedly found nil
我很难理解 ParseSwift 初始值设定项中 keyValueStore
的概念。这些是我使用 Parse 和这个 SDK 的第一步,因为我最后决定不使用 Firebase。
从 AppDelegate 中的简单初始化开始:
ParseSwift.initialize(applicationId: "...",
clientKey: "...",
serverURL: URL(string: "https://...")!)
出于学习目的,我创建了用户结构:
struct ParseUsr: ParseUser {
//: These are required for `ParseObject`.
var objectId: String?
var createdAt: Date?
var updatedAt: Date?
var ACL: ParseACL?
//: These are required for `ParseUser`.
var username: String?
var email: String?
var password: String?
var authData: [String: [String: String]?]?
}
然后当我的应用程序启动时,我会检查当前用户是否为 nil,为简单起见,只需打印它:
print(ParseUsr.current)
但是在检索时第 46 行有一个 nil,ParseStorage.swift -> backingStore
的“在隐式展开可选值时意外发现 nil”
后来我也尝试在初始化程序中添加 keyValueStore:
ParseSwift.initialize(applicationId: "...",
clientKey: "...",
serverURL: URL(string: "https://...")!, keyValueStore: KeyChain())
KeyChain 的 class 到目前为止是空的实现,但这不应该导致 backingStore
:
上的上述 nil 异常
class KeyChain: ParseKeyValueStore {
func delete(valueFor key: String) throws {
}
func deleteAll() throws {
}
func get<T>(valueFor key: String) throws -> T? where T : Decodable {
return nil
}
func set<T>(_ object: T, for key: String) throws where T : Encodable {
}
}
请问如何使用当前用户的本地持久化?
谢谢!
原因是我认为称为“代码竞赛”的事情:
我确实在 didFinishLaunchingWithOptions
中调用了初始化程序,因为它执行异步初始化,第一个 viewController 的 viewDidLoad
中的另一个代码执行得更快,因此调用 print(user.current)
在 Parse 初始化之前。
我在 didFinishLaunchingWithOptions
中将 Parse init 作为第一个移动,现在它工作正常。
我很难理解 ParseSwift 初始值设定项中 keyValueStore
的概念。这些是我使用 Parse 和这个 SDK 的第一步,因为我最后决定不使用 Firebase。
从 AppDelegate 中的简单初始化开始:
ParseSwift.initialize(applicationId: "...",
clientKey: "...",
serverURL: URL(string: "https://...")!)
出于学习目的,我创建了用户结构:
struct ParseUsr: ParseUser {
//: These are required for `ParseObject`.
var objectId: String?
var createdAt: Date?
var updatedAt: Date?
var ACL: ParseACL?
//: These are required for `ParseUser`.
var username: String?
var email: String?
var password: String?
var authData: [String: [String: String]?]?
}
然后当我的应用程序启动时,我会检查当前用户是否为 nil,为简单起见,只需打印它:
print(ParseUsr.current)
但是在检索时第 46 行有一个 nil,ParseStorage.swift -> backingStore
后来我也尝试在初始化程序中添加 keyValueStore:
ParseSwift.initialize(applicationId: "...",
clientKey: "...",
serverURL: URL(string: "https://...")!, keyValueStore: KeyChain())
KeyChain 的 class 到目前为止是空的实现,但这不应该导致 backingStore
:
class KeyChain: ParseKeyValueStore {
func delete(valueFor key: String) throws {
}
func deleteAll() throws {
}
func get<T>(valueFor key: String) throws -> T? where T : Decodable {
return nil
}
func set<T>(_ object: T, for key: String) throws where T : Encodable {
}
}
请问如何使用当前用户的本地持久化?
谢谢!
原因是我认为称为“代码竞赛”的事情:
我确实在 didFinishLaunchingWithOptions
中调用了初始化程序,因为它执行异步初始化,第一个 viewController 的 viewDidLoad
中的另一个代码执行得更快,因此调用 print(user.current)
在 Parse 初始化之前。
我在 didFinishLaunchingWithOptions
中将 Parse init 作为第一个移动,现在它工作正常。