解析:上传图像的对象类型

时间:2014-08-24 14:29:50

标签: parse-platform

我需要从我的Android应用程序上传图像来解析数据浏览器 我创建了一个班级 - " A级",有#" ABC"文件类型的列。
但每当我将图像上传到" ABC"。

时,我就会一直收到以下错误
can't add objects for a field that isn't an array

我谷歌了一段时间,发现了这个link 所以,我尝试将图像上传到一个新的类和列(我没有先创建它。我让Parse自动创建并在我上传图像后为我分配)。
然后我注意到,分配给上传图像的列类型是一个数组 如果有人能够进一步解释这个问题会很棒吗?

以下是代码: - 编辑 -

ParseObject reportObject = new ParseObject(ParseClass.CaseImageClass);
reportObject.add(ParseClass.FObjectKeyAttr, objectId);

ParseFile parseBitmapFile = new ParseFile(uqID.toString() + ".png", byteArray);
parseBitmapFile.save();
reportObject.add(ParseClass.ImageAttr, parseBitmapFile);
reportObject.saveInBackground();

3 个答案:

答案 0 :(得分:0)

上传要解析的图像时,图像Class必须是PFFile类。如果没有看到数据库的代码和设置,很难确定您收到此错误的原因。只要与Parse类关联的属性/ hash /值引用PFFile并且所有属性/ hash / value类型与每列和列的相应名称匹配,您应该没问题。在这种情况下,某些东西不匹配会导致您看到的错误。

答案 1 :(得分:0)

试试这个:

parseBitmapFile.save();  

你应该使用saveInBackground()代替.save();

 ParseObject.registerSubclass(Imaggg.class);
        ParseObject testObject = ParseObject.create("MyProfiles");
      ParseFile file = new ParseFile("123.png",imagearray);
      file.saveInBackground();

     testObject.put("comments",str_comment);
        testObject.put("imageFile",file);
        testObject.put("userName",user_name);


       testObject.saveInBackground(new SaveCallback() {

            @Override
            public void done(ParseException e) {

                  dlg.dismiss();
                  Log.e("Exception", "get: " +e);
                  if (e == null) {
                 Toast.makeText(getApplicationContext(),"Shared Succesfully",Toast.LENGTH_LONG).show();

                    } else {
                      // Sign up didn't succeed. Look at the ParseException
                      // to figure out what went wrong
                         Toast.makeText(getApplicationContext(),"Something went wrong.Please try again later",Toast.LENGTH_LONG).show();

                    }


            }
        });

这里imagearray是byte []。

答案 2 :(得分:0)

我猜测这行代码是设置对象ID吗? Parse默认设置自己的对象id。如果要覆盖它,则会有一个单独的命令用于访问Parse定义的objectID列。

  

reportObject.add(ParseClass.FObjectKeyAttr,objectId);

仅当列类型是数组时才使用

添加。尝试将此更改为IF,如果您没有覆盖默认的objectID列并改为创建自己的列。

  

reportObject.put(ParseClass.FObjectKeyAttr,objectId);

这行代码告诉parse将列作为数组。如果要将其更改为ParseFile类型或任何其他类型,则将.add更改为.put,如上面的代码所示。 .add,.addAll。 addAllUnique仅为数组类型列保留。

  

reportObject.add(ParseClass.ImageAttr,parseBitmapFile);   reportObject.put(ParseClass.ImageAttr,parseBitmapFile);

如果您遇到任何其他问题,请告诉我。我很乐意提供帮助。