Ian
Ian

Reputation: 239

unable to append object to List<T> in realm using swift

so I have two objects like the following :

class BankModel: Object {

    dynamic var bankModelId: String = ""
    dynamic var bankName: String!
    dynamic var bankBranch: String?

    var coordinate: List<LocationModel>!

    dynamic var buyingTWD: String?
    dynamic var buyingUSD: String?
    dynamic var sellingTHB: String?
    dynamic var sellingUSD: String?

    override static func primaryKey() -> String? {
        return "bankModelId"
    }
}

and

class LocationModel: Object {

    dynamic var locationId: String = ""
    dynamic var latitude: String = ""
    dynamic var longitude: String = ""

    override static func primaryKey() -> String? {
        return "locationId"
    }
}

when I try to append LocationModel

let realm = try! Realm()
let bankModel = BankModel()
let coordinate = LocationModel()
coordinate.locationId = "1"
coordinate.longitude = "20.11111"
coordinate.latitude = "123.21412"
bankModel.bankModelId = "1"
bankModel.bankName = "SuperRich Orange"
bankModel.bankBranch = "HQ"
bankModel.buyingUSD = "\(buyingUSDRepalced)"
bankModel.buyingTWD = "\(buyingTWDRepalced)"
bankModel.coordinate.append(coordinate)

try! realm.write {
    realm.add(bankModel, update: true)
}

I got this fatal error:

unexpectedly found nil while unwrapping an Optional value

No clue why is this happening, any hint is appreciated!

Upvotes: 1

Views: 238

Answers (1)

Papershine
Papershine

Reputation: 5223

The coordinate is nil. You haven't initialized it. The compiler doesn't complain because you declared it as an implictly unwrapped optional, which can be nil. Use

var coordinate = List<LocationModel>()

instead.

Upvotes: 2

Related Questions