【发布时间】: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