不能用存储的属性“描述”覆盖

Posted

技术标签:

【中文标题】不能用存储的属性“描述”覆盖【英文标题】:Cannot override with a stored property 'description' 【发布时间】:2015-10-27 07:06:06 【问题描述】:

我有一个 NotSureItem 对象类,我在其中添加了项目的一些属性。在我的应用程序中,我使用 Realm 作为数据库,但是当我在我的应用程序中添加描述属性时,它向我显示了覆盖存储属性的错误。而且它还给出了一些错误,例如带有Objective-C选择器'description'的'description'的Getter与具有相同Objective-C选择器的超类'NSObject'的'description'的getter冲突。这是我的代码对象类。

import Foundation
import Realm

class NotSureItem: RLMObject 
    dynamic var title = ""
    dynamic var description = ""
    dynamic var dateTime = NSDate()

【问题讨论】:

Piyush 是对的。另外,即使它不是 NSObject 子类,您仍然希望避免使用 description 属性名称,因为如果您想在未来某个时刻添加该一致性(对于调试目的)。 【参考方案1】:

因为它与 NSObject 中的 -description 方法冲突(回想一下,Core Data 动态生成属性访问器和修改器 - 名为“description”的属性需要创建一个名为 -description 的访问器方法)。

请注意,属性名称不能与任何无参数相同 NSObject 或 NSManagedObject 的方法名称。例如,您不能 给一个属性命名为“描述”。有数百种方法 在可能与属性名称冲突的 NSObject 上——这个列表可以 在没有来自框架或其他库的警告的情况下增长。你应该 避免使用非常笼统的词(如“字体”和“颜色”)和词或 与 Cocoa 范式重叠的短语(例如“isEditing”和 “objectSpecifier”)。

【讨论】:

以上是关于不能用存储的属性“描述”覆盖的主要内容,如果未能解决你的问题,请参考以下文章

用本地属性覆盖远程 Spring Cloud 属性

迅速覆盖属性

覆盖 Swift 中的存储属性

(vue-test-utils) '不能覆盖属性 $route,...'

java覆盖和隐藏

不要用 clickonce 覆盖 settings.settings 文件