web-dev-qa-db-fra.com

Domaine - La propriété ne peut pas être marquée comme dynamique car son type ne peut pas être représenté dans Objective-C

J'essaie d'implémenter le scénario ci-dessous, mais je fais face au problème

class CommentsModel: Object {
  dynamic var commentId = ""
  dynamic var ownerId: UserModel?
  dynamic var treeLevel = 0
  dynamic var message = ""
  dynamic var modifiedTs = NSDate()
  dynamic var createdTs = NSDate()

 //facing issue here 
 dynamic var childComments = List<CommentsModel>()
}

J'ai un modèle de commentaires qui a des propriétés non facultatives dans lesquelles childComments est une liste de la même classe de modèle de commentaires. En cela, quand je déclare dynamic var childComments = List<CommentsModel>() 

il me montre que la propriété ne peut pas être marquée dynamique car son type ne peut pas être représenté en Objective-C.

S'il vous plaît, aidez-moi à atteindre mes objectifs

10
Suresh

Les propriétés List et RealmOptional ne peuvent pas être déclarées comme dynamiques car les propriétés génériques ne peuvent pas être représentées dans le runtime Objective-C, utilisé pour l'envoi dynamique des propriétés dynamiques, et doivent toujours être déclarés avec let.

En savoir plus dans Docs .

Donc, vous devriez déclarer childComments de cette façon:

let childComments = List<CommentsModel>()
10
Dmitry

Juste pour rendre plus compréhensible la façon dont vous pouvez ajouter des données à la liste bien qu’elle soit déclarée comme let.

import Foundation
import RealmSwift
import Realm

class Goal: Object {
    //List that holds all the Events of this goal
    let listOfEvents = List<CalEvent>()

    required public convenience init(eventList: List<CalEvent>) {
        self.init()
        for event in eventList {
            //Append the date here
            self.listOfEvents.append(i)
        }
    }
}
0
chainstair