我在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"))
}

10-08 06:24