Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Armazenar objeto numa sessão

Boa tarde Felipe Torres

Criei uma pagina de login que verifica um os dados de uma pessoa atraves de um webapi no Swift usei sua dica e utilizei o Alamofire. O usuario passando o login e senha corretos o serviço retorna todos os dados dele, no Swift usei o ObjectMapper para converte-los numa classe chamada Pessoa.

Gostaria de saber como faço para armazenar esse objeto Pessoa numa sessão na view de login e instanciar esse mesmo objeto na view home para alimentar uma tabela com esses dados. Esse serio o modo correto ou devo usar um preporForSegue e passar esses dados????

4 respostas

Oi Julio,

Neste caso o melhor é você salvar e buscar o objeto no NSUserDefaults assim você não precisa ficar passando este objeto a todo momento e você pode acessá-lo de qualquer lugar.

Abraço!

Boa tarde Joviane

Então eu consegui salvar e buscar strings ou inteiros porem tentei guardar o objeto inteiro e não consegui, poderia demonstrar como faço, preciso mudar algo na minha classe??

solução!

Oi Julio,

Você precisa fazer com que a sua classe tenha a capacidade de ser serializada. Para fazer isto é só conformar com um protocolo chamado NSCoding e implementar os métodos:

Para serializar:

func encodeWithCoder(aCoder: NSCoder) {
    aCoder.encodeObject(ATRIBUTO, forKey: "NOME_DA_CHAVE_DO_ATRIBUTO")
    //...
}

Para de-serializar:

required init(coder aDecoder: NSCoder) {
    ATRIBUTO = aDecoder.decodeObjectForKey("NOME_DA_CHAVE_DO_ATRIBUTO") as! TIPO_DO_ATRIBUTO
    //...
}

A sua classe também deve herdar de NSObject.

Depois é só trabalhar com o objeto como um NSData usando as classes NSKeyedArchiver e NSKeyedUnarchiver para salvá-lo e recuperá-lo. Por exemplo, para salvar:

userDefaults.setObject(NSKeyedArchiver.archivedDataWithRootObject(OBJETO), forKey: "NOME_DA_CHAVE_DO_OBJETO")

Abraço!

Boa noite Joviane

Mesmo estando usando o Mappable posso fazer isso????? Dê uma olhada na minha classe e ainda tenho a sub classe Matricula

import Foundation

import ObjectMapper

class Aluno: Mappable

{

var ra:String!

var senha:String!

var nome:String!

var cpf:String!

var email:String!

var matricula:Matricula!

required init?(_ map: Map) {}

func mapping(map: Map) {

ra <- map["Ra"]

senha <- map["Senha"]

nome <- map["Nome"]

cpf <- map["Cpf"]

email <- map["Email"]

matricula <- map["Matricula"]

}

}