【问题标题】:objc.error: NSInternalInconsistencyException - readFromData:ofType:error: is a subclass responsibility but has not been overriddenobjc.error: NSInternalInconsistencyException - readFromData:ofType:error: 是一个子类责任但没有被覆盖
【发布时间】:2022-12-19 23:17:20
【问题描述】:

我正在使用 PyObj-C 并在 python 文件中创建一些方法来使用 NSDocument 读取和写入文件,它使用抽象 NSFileCoordinater 类。以这种方式访问​​文件,而不是仅仅使用 python 的open 让这些类为我处理一些事情,例如防止一次从多个程序编辑文件或为读/写操作提供足够的时间在它可能陷入死锁之前完成.

这些功能非常重要,我希望在此构建的应用程序尽可能达到标准。

我有这段代码实例化一个 NSDocument 对象,该对象包含您放入其中的任何文件路径的内容,作为一个函数:

@classmethod
def write(cls, file: str):
    path = NSURL.fileURLWithPath_(file)
    ext = file.split('.')[-1]
    doc = NSDocument.alloc().initWithContentsOfURL_ofType_error_(path, ext, None)

当我使用有效的文件路径调用此函数时,出现此错误:

  File "/Users/user123/PycharmProjects/shoutout/src/sutils/cfiles.py", line 27, in write
    doc = NSDocument.alloc().initWithContentsOfURL_ofType_error_(path, ext, None)
objc.error: NSInternalInconsistencyException - readFromData:ofType:error: is a subclass responsibility but has not been overridden.

我试图找到基于 objective-c、swift 或 pyobj-c 的论坛,因为它在 google 上询问任何关键字,例如 objective-c is a subclass responsibility but has not been overridden,并检查了 stackoverflow 和 github 上关于此错误的现有帖子,但我找不到任何一个。

据我了解,Objective-C 是多态的,我的方法initWithContentsOfURL:ofType:error: 调用readFromData:ofType:error,同时还有其他方法。但是,当它说“是子类责任但未被覆盖”时,我不完全理解它的含义。我也不确定这意味着什么覆盖一个班级或一个班级是一种责任,所以这对我来说没有帮助。

NSInternalInconsistencyException 表示“当内部断言失败并暗示被调用代码中出现意外情况时”。不确定内部“断言”是什么或者这可能意味着什么。

知道我能做些什么来解决这个问题吗?

【问题讨论】:

    标签: python objective-c pyobjc


    【解决方案1】:

    NSDocument 是一个抽象类,需要您子类化并实现许多方法才能使其可用。这是Apple's documentation for the class 中的文档。

    较早的 Document-Baed App Programming Guide for Mac 提供了更多相关信息。

    【讨论】:

      猜你喜欢
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多