【发布时间】:2022-01-06 19:19:11
【问题描述】:
我正在使用 ParseSwift 更新 iOS 应用程序。一般来说,应用程序的每个 ParseUser 都有几个需要查询或获取的关联 Userdata ParseObjects。
当前的实现使用单独的查询一个接一个地查找每个单独的 Userdata 对象。这可行,但显然不是最佳的。
我已经修改的是每个 ParseUser 现在都保存了一个与用户相关的 Userdata ParseObjects 的 objectId 数组。
我现在想要实现的是在 ParseUser 的 userdataIds 字段中查询与这些保存的 objectId 对应的所有 Userdata 对象。
这是我的代码:
func asyncAllUserdataFromServer() {
let userdataIdArray = User.current!.userdataIds
var objectsToBeFetched = [Userdata]()
userdataIdArray?.forEach({ objectId in
let stringObjectId = objectId as String
// create a dummy Userdata ParseObject with stringObjectId
let object = Userdata(objectId: stringObjectId)
// add that object to array of Userdata objects that need to be fetched
objectsToBeFetched.append(object)
})
// fetch all objects in one server request
objectsToBeFetched.fetchAll { result in
switch result {
case .success(let fetchedData):
// --- at this point, fetchedData is a ParseError ---
// --- here I want to loop over all fetched Userdata objects ---
case .failure(let error):
...
}
}
}
我在 ParseSwift 文档中读到,可以根据它们的 objectIds 同时获取多个对象,因此我的想法是创建一个包含要获取的 objectIds 的虚拟 Userdata 对象数组。但是,这不起作用。
如代码块所示,我能够缩小错误范围,并且在执行查询时,fetchedData 以ParseError 的形式返回:
Error fetching individual object: ParseError code=101 error=objectId "y55wmfYTtT" was not found in className "Userdata"
具有该 objectId 的 Userdata 对象是保存在 User.current.userdataIds 数组中的第一个(也是唯一一个)objectId。这个对象确实存在于我的服务器上,我肯定知道。
任何想法为什么它无法获取?
一般信息:
- Xcode 13.2.1
- 斯威夫特 5
- ParseSwift 2.5.0
- Back4App 后端
编辑:
用户实现:
struct User: ParseUser {
//: These are required by `ParseObject`.
var objectId: String?
var createdAt: Date?
var updatedAt: Date?
var ACL: ParseACL?
//: These are required by `ParseUser`.
var username: String?
var email: String?
var emailVerified: Bool?
var password: String?
var authData: [String: [String: String]?]?
//: Custom keys.
var userdataIds: [String]? // --> array of Userdata objectId's
}
用户数据实现:
struct Userdata: ParseObject, ParseObjectMutable {
var objectId: String?
var createdAt: Date?
var updatedAt: Date?
var ACL: ParseACL?
var firstname: String?
var lastSeen: Int64?
var isLoggedIn: Bool?
var profilepicture: ParseFile?
}
【问题讨论】:
标签: swift parse-platform parse-server