检查ParseFile是否为空

时间:2015-07-27 09:36:05

标签: android parse-platform

我的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是否为空,我将非常感激。

最好的问候

2 个答案:

答案 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