Because your Parent class properties aren't declared as dynamic. Most of the property in the Realm must be declared as dynamic (Exception is the List and LinkingObjects). Realm loaded all values lazily for performance. All property access is replaced specialized accessor at runtime. So you should declare the properties as dynamic. Like the following:

Also, Surah class and Reader class will be much more simpler using convenience initializer. If so, You don't need to override init(realm: RLMRealm, schema: RLMObjectSchema), init(value: AnyObject, schema: RLMSchema) and init().