Java 承载的自定义服务中存在错误

Java 承载的自定义服务中存在错误,java,swift,backendless,Java,Swift,Backendless,我正在尝试使用后台中的托管自定义服务 我创建了一个自定义的jar库,并将其上传到backhandle托管的自定义服务,但当我尝试使用Swift中的SDK调用它时,它返回了一个错误 我的图书馆如下: SalvarContatosLibrary.java package com.mbaas.service; import com.backendless.Backendless; import com.backendless.servercode.IBackendlessService; impo

我正在尝试使用
后台
中的
托管自定义服务

我创建了一个自定义的
jar库
,并将其上传到
backhandle托管的自定义服务
,但当我尝试使用Swift中的SDK调用它时,它返回了一个错误

我的图书馆如下:

SalvarContatosLibrary.java

package com.mbaas.service;

import com.backendless.Backendless;
import com.backendless.servercode.IBackendlessService;

import java.util.ArrayList;

public class SalvarContatoLibrary implements IBackendlessService {

    public boolean salvarContatos(ArrayList<Contato> contato) {

        boolean retorno = true;

        if(contatos == null || contatos() == 0) {
            retorno = false;
        } else {
            for(Contato contato: contatos) {
                Backendless.Persistence.save(contato);
            }
        }

        return retorno;
    }
}
Usuario.java

package com.mbaas.service;

import java.util.Date;

/**
 * Created by guilhermedupas on 12/07/17.
 */

public class Usuario {

    private String nome;
    private String foto;
    private Date dataNascimento;
    private String numeroTelefone;
    private String telefoneE164;

    private String objectId;
    private Date created;
    private Date updated;
    private String ownerId;
}
我尝试调用该方法,代码如下:

Swift代码

func salvarContato() {

    let nomeServico = "SalvarContatoLibrary"
    let versaoServico = "1.0.0"
    let metodoServico = "salvarContatos"

    let contatosNSArray = contatos as! NSArray

    backendless?.customService.invoke(nomeServico, serviceVersion: versaoServico, method: metodoServico, args: contatosNSArray as! [Any],
        response: { (result: Any?) -> Void in
            print(result)

    }, error: { (fault: Fault?) -> Void in
        print("Erro contatos")
        print("Server reported an error to save the User: \(fault)")
    })
}
它返回的错误是:

服务器报告了保存用户的错误:可选(错误='0'[异常类:“CodeRunnerException”{Msg:“参数数目错误”,原因:“无”}])

更新:

否,
contatosnarray
不为空

我现在尝试将
contatos
转换为
NSMutableArray

contatosnmutablearray=contatos as!NSMUTABLEARRY


它停止了重新调整我的错误,但它以数字形式返回响应
0
,并且它没有保存数据。

此答案来自后台支持:

版本3的Swift代码生成无法正常工作

我建议采取以下办法:

  • 修改java代码,使其为私有字段声明公共字段或get/set方法

  • 为服务创建jar并在4.0应用程序中部署。这样您就可以为它生成Swift代码

  • 生成swift代码后,将其与3.x应用程序一起使用

  • func salvarContato() {
    
        let nomeServico = "SalvarContatoLibrary"
        let versaoServico = "1.0.0"
        let metodoServico = "salvarContatos"
    
        let contatosNSArray = contatos as! NSArray
    
        backendless?.customService.invoke(nomeServico, serviceVersion: versaoServico, method: metodoServico, args: contatosNSArray as! [Any],
            response: { (result: Any?) -> Void in
                print(result)
    
        }, error: { (fault: Fault?) -> Void in
            print("Erro contatos")
            print("Server reported an error to save the User: \(fault)")
        })
    }