我的ParseUser类有一个名为“profile_photo”的自定义列,它是照片的ParseFile。我已将照片文件附加到ParseUser实例,我可以在我的应用程序用户仪表板上看到该用户的profile_photo列已填充该文件,其他用户已按预期为该列设置了“未定义”。现在,在我的代码中,我需要检查用户是否附加了个人资料照片。我该怎么做呢。我试图使用isDataAvailable()检查它,但即使profile_photo的值在仪表板上是“未定义”,它也总是返回true。我也尝试了以下内容:
ParseFile photo = user.get("profile_photo");
photo.getDataInBackground(new GetDataCallback() {
@Override public void done(byte[] data, ParseException pfe) {
if(pfe == null) {
// byte array data always returns something! data.length > 0, always, even for undefined...
}
}
});
但正如您在注释中看到的那样,即使附加到ParseUser的ParseFile是“未定义的”,数据数组也永远不会为空。
如果您能告诉我或指示我清楚地识别parsefile是否为空,我将非常感激。
最好的问候
答案 0 :(得分:3)
您使用了错误的方法来获取文件。如果您在get("column_name")
的列上使用ParseFile
,则此方法将返回文件ID。你应该改为使用
ParseFile file = object.getParseFile("column_name");
如果文件未定义,将返回 null 。
答案 1 :(得分:0)
可能会帮助他人,可以在查询函数上使用ContainsKey来查看ParseUser / ParseObject是否在定义的属性下具有文件-
if (ParseObject.ContainsKey("file_column_name"))
// get the file and do whatever you want with it here
else
// error
同一代码的更高效的版本是-
if (ParseObject.TryGetValue("file_column_name", out ParseFile file))
// do whatever you want with the file here