我在Parse(后端)上存储了一个用户列表,其中有一个名为“ profile_picture”的列,用于存储用户的个人资料图片。但是,某些用户没有个人资料图片,因此他们的profile_picture列是“未定义”(没有值)。
我正在使用搜索栏查询所有用户,并使用用户的个人资料图片和用户名更新tableview。我通过在查询后将用户名附加到var searchResults = String并将配置文件pic附加到var searchImages = PFFile来完成此操作,如下所示:
let query = PFQuery.orQuery(withSubqueries: [usernameQuery!,fbUsername!, firstnameQuery!, lastnameQuery!]);
searchActive = true;
query.findObjectsInBackground { (objects, error) in
if error != nil {
print("There was an error getting userlist");
}
else {
if let users = objects {
self.searchResults.removeAll(keepingCapacity: false);
for object in users {
if let user = object.object(forKey: "username") as? String {
self.searchResults.append(user);
}
if let picture = object.object(forKey: "profile_picture") as? PFFile {
self.searchImages.append(picture);
}
self.searchTableView.reloadData();
}
问题是,当“ profile_picture”列为空时,它不会追加任何内容,这意味着searchResults数组(包含用户名)和searchImages数组(包含PFFiles)具有不同的大小,这导致值的分配不协调。它们应该是并行数组。我正在使用这些数组中的值来分配表单元格中的值。
希望你们能理解我的问题!提前致谢
最佳答案
因此,您的username
字段绝对不能为空。我认为您可以在检查else
是否为零后添加profile_picture
。喜欢:
if let picture = object.object(forKey: "profile_picture") as? PFFile {
self.searchImages.append(picture);
} else {
self.searchImages.append(UIImage(named:"placeholder"))
}