托管自定义服务

时间:2017-07-13 15:06:23

标签: java swift backendless

我正在hosted custom service

中使用Backendless

我创建了一个自定义jar library并将其上传到Backendless hosted custom service但是当我尝试使用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;
    }
}

Contato.java

package com.mbaas.service;

import java.util.Date;

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

public class Contato {

    private Usuario usuario;
    private int prioridade;

    private String objectId;
    private Date created;
    private Date updated;
    private String ownerId;
}

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 Code

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)")
    })
}

它返回的错误是:

Server reported an error to save the User: Optional(FAULT = '0' [ExceptionClass:"CodeRunnerException" {Msg:"Wrong number of arguments", Cause:"none"}] <ExceptionClass:"CodeRunnerException" {Msg:"Wrong number of arguments", Cause:"none"}> )

更新:

不,contatosNSArray不为空。

我现在尝试将contatos投射到NSMutableArray

contatosNSMutableArray = contatos as! NSMutableArray

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

1 个答案:

答案 0 :(得分:0)

这个答案来自Backendless支持:

  

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

     

我建议采用以下方法:

     
      
  1. 修改您的java代码,以便为私有字段声明公共字段或获取/设置方法。

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

  4.   
  5. 生成swift代码后,请将其与3.x应用一起使用。

  6.