Search code examples
iosswiftrealmxcode9

RealmSwift: Invalid value for property on xCode 9


I have a bug when I update the pod version on my Podfile. I'm using the latest version of RealmSwift's framework on xCode 9. This is my model:

import Foundation
import RealmSwift
import ObjectMapper

class Salesman: Object,Mappable,DataElementDelegate, ObjectDelegate {

   //MARK: - properties
   public dynamic var id: Int = 0
   public dynamic var name: String = ""
   public dynamic var amount: Int = 0
   public dynamic var updated_at_timestamp: Int = 0

   //MARK: - Init
   required convenience init?(map: Map) {
       self.init()
   }

   //MARK: - Mapping
   func mapping(map: Map) {
       id<-map["id"]
       name<-map["name"]
       amount<-map["amount"]
       updated_at_timestamp<-map["updated_at_timestamp"]
   }

   //MARK: - Realm methods
   override static func primaryKey()->String?{
       return "id"
   }

   //MARK: - Methods
   public func getID()->Int{
       return self.id
   }

   //MARK: - Data delegate

   func getAmount() -> String {
       return "\(self.amount)"
   }

   func getName() -> String {
       return self.name
   }

   func getLastUpdate() -> Int {
       return self.updated_at_timestamp
   }

}

Now when I try to insert values on my realmn I have this crash 'RLMException', reason: 'Invalid value '1000' for property 'Salesman.amount''.

I write that insert code:

//MARK: - Mocks Salesman
public func mocksSalesman()->[Salesman]{

    var array: [Salesman] = []

    let sale1 = Salesman()
    sale1.id = 1
    sale1.name = "Raul"
    sale1.amount = 1000

    let sale2 = Salesman()
    sale2.id = 2
    sale2.name = "Tomas"
    sale2.amount = 500

    let sale3 = Salesman()
    sale3.id = 3
    sale3.name = "Luciano"
    sale3.amount = 700

    array.append(sale1)
    array.append(sale2)
    array.append(sale3)

    return array

}

public func insert(){
    let list = self.mocksSalesman()
    let realm = try! Realm()
    for item in list{
        try! realm.write {
            realm.add(item, update: true)
        }
    }
}

I've trying to insert 3 salesmen into my realm's database but I have that issue.

What could be happen?

Regards


Solution

  • Ok guys, I have the answer. That just put this code:

    func getAmount() -> Int {
       return self.amount
    }
    

    Instead of:

    func getAmount() -> String {
       return "\(self.amount)"
    }