Parse platform Parse:上传图像的对象类型

Parse platform Parse:上传图像的对象类型,parse-platform,Parse Platform,我需要从我的android应用程序上传一个图像来解析数据浏览器。 我创建了一个类——class a,它有一个文件类型为ABC的列。 但每当我把图片上传到ABC时,我总是会遇到以下错误 can't add objects for a field that isn't an array 我搜索了一会儿,发现了这个。 因此,我尝试将图像上传到一个新的类和列,我并没有首先创建这个。我让解析自动创建并分配给我后,我上传了我的图像到它。 然后我注意到,分配给上传图像的列类型是一个数组。 如果有人能进一步解

我需要从我的android应用程序上传一个图像来解析数据浏览器。 我创建了一个类——class a,它有一个文件类型为ABC的列。 但每当我把图片上传到ABC时,我总是会遇到以下错误

can't add objects for a field that isn't an array
我搜索了一会儿,发现了这个。 因此,我尝试将图像上传到一个新的类和列,我并没有首先创建这个。我让解析自动创建并分配给我后,我上传了我的图像到它。 然后我注意到,分配给上传图像的列类型是一个数组。 如果有人能进一步解释这一点就好了

下面是代码:-编辑-

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();

上载要解析的图像时,图像类必须是PFFile类。如果看不到数据库的代码和设置,就很难确定收到此错误的原因。只要与Parse类关联的属性/哈希/值引用一个PFFile,并且所有的属性/哈希/值类型都与每个列和列的各自名称匹配,就可以了。本例中的某些内容不匹配,导致您看到的错误

试试这个:

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是字节[]。

我猜这行代码是用来设置对象id的?默认情况下,Parse设置它们自己的对象id。如果您要覆盖它,那么将使用一个单独的命令来访问由Parse定义的objectID列

reportObject.addParseClass.FObjectKeyAttr,objectId

仅当列类型为数组时才使用Add。如果不重写默认的objectID列并创建自己的列,请尝试将其更改为

reportObject.putParseClass.FObjectKeyAttr,objectId

这行代码告诉parse将列设置为数组。如果要将其更改为ParseFile类型或任何其他类型,请按照上述代码中所述更改.add to.put。添加,.addAll。addAllUnique仅为数组类型列保留

reportObject.addParseClass.ImageAttr,parseBitmapFile; reportObject.putParseClass.ImageAttr,parseBitmapFile

如果你还有其他问题,请告诉我。我很乐意帮忙