- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在制作一个文本编辑器应用程序,它将其每个文档存储为 NSFileWrapper 目录,文档文本和文档标题作为目录中的单独文件。我希望 loadFromContents: (id) contents
的 contents
部分是 NSFileWrapper,但事实并非如此。我的代码如下(它属于 UIDocument 的子类):
// loads document data to application data model
- (BOOL) loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError *__autoreleasing *)outError {
// from the contents, extract it so that we have the properties initialized
self.fileWrapper = (NSFileWrapper *) contents;
NSLog(@"%@", [contents class]); //** returns NSConcreteData
// get the fileWrapper's children
NSDictionary *contentsOfFileWrapper = [contents fileWrappers];
// assign things to the document!
// can also be done lazily through getters
self.text = [contentsOfFileWrapper objectForKey:TEXT_KEY];
self.title = [contentsOfFileWrapper objectForKey:TITLE_KEY];
if ([self.delegate respondsToSelector:@selector(noteDocumentContentsUpdated:)]){
[self.delegate noteDocumentContentsUpdated:self];
}
return YES;
}
当我试图调用这个方法时,我得到了这个错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteData fileWrappers]: unrecognized selector sent to instance 0x9367150'
下面是我的 contentsForType:
函数,如果有帮助的话:
- (id) contentsForType:(NSString *)typeName error:(NSError *__autoreleasing *)outError {
if (!self.fileWrapper) {
self.fileWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:nil];
}
NSDictionary *childrenFileWrappers = [self.fileWrapper fileWrappers];
// now if we have a text but it is not represented, in the file wrapper, put it in. Same with the images.
if ([childrenFileWrappers objectForKey:TEXT_KEY] == nil && self.text != nil) {
NSData *textData = [self.text dataUsingEncoding:kCFStringEncodingUTF16];
NSFileWrapper *textFileWrapper = [[NSFileWrapper alloc] initRegularFileWithContents:textData];
[textFileWrapper setPreferredFilename:TEXT_KEY];
[self.fileWrapper addFileWrapper:textFileWrapper];
}
if ([childrenFileWrappers objectForKey:TITLE_KEY] == nil && self.title != nil) {
NSData *titleData = [self.title dataUsingEncoding:kCFStringEncodingUTF16];
NSFileWrapper *titleFileWrapper = [[NSFileWrapper alloc] initRegularFileWithContents:titleData];
[titleFileWrapper setPreferredFilename:TITLE_KEY];
[self.fileWrapper addFileWrapper:titleFileWrapper];
}
return self.fileWrapper;
}
谢谢!
最佳答案
我解决了这个问题。我的文档文件夹中有一个 .DS_Store
文件,它弄乱了结果。一旦我添加了一个 if 语句来排除一切正常。
关于ios - UIDocument loadFromContents 应该返回一个 NSFileWrapper;改为返回 NSConcreteData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17430620/
我们正在将一个包含大量跨平台代码的应用程序移植到 Cocoa。必须使用直接对磁盘上的文件进行加载/保存的低级文件处理例程。 由于 NSFileWrapper 旨在通过 NSData 呈现内存中文件的内
我正在创建一个 NSDocument 包,其中可能包含数百个大文件,因此我不想在打开文档时读取全部内容。 我花了一些时间寻找,但找不到明确的答案。大多数人似乎认为 NSFileWrapper 将所有数
假设我有一个 NSFileWrapper 目录。该目录由几级目录和文件组成。有些文件很大。这些文件是全部加载到内存中,还是延迟加载? 如果它们被加载到内存中,是否有任何替代 NSFileWrapper
我有一个 NSFileWrapper 目录,我想在其中更新某个 FileWrapper。我想知道最好的方法是什么? 到目前为止,我已经使用了这段代码: [self.fileWrapper addReg
我有一个 UIDocument,我希望它由 (1) 一个 txt 文件和 (2) 几个 jpg 图像组成。我将 txt 和所有 jpg 放入 NSFileWrapper 中。 当我加载 UIDocum
我正在使用 NSFileWrapper 作为我的包文档。有时,当我请求包内文件的数据时,我得到nil。 这是我查询包内文件数据的方法: - (NSData*) dataOfFile(NSString*
我有一个应用程序正在使用 NSFileWrapper 创建用户数据的备份。此备份文件包含文本和媒体文件(此处与压缩无关)。有时这些备份文件会变得非常大,超过 200 MB。当我调用 NSFileWra
我们最近将代码转换为使用 UIDocument 而不是直接在文件系统上操作文件,因此我们遇到了一些性能问题。我们想知道我们是否错误地使用了这个类,是否有其他人遇到过这些问题,以及解决这些问题的常用方法
我想让我的应用程序文件系统保留其中每个文件的元数据,但也支持在用户端创建目录。我看过 NSFileWrapper 但它似乎将带有元数据的文件保存为目录。这是有道理的,但是现在我如何区分实际目录和 NS
我有一个基于 NSDocument 的应用程序,它使用文件包装器来保存和加载其数据。文档可以有各种资源,所以我不想把所有东西都加载到内存中。我可能在做一些根本性的错误,但是一旦我更改了一个(内部)文件
给定一个 NSFileWrapper 对象(用于文件或目录),是否有任何方法可以获取磁盘上实际文件位置的完整路径? [fileWrapper filename] 只返回文件名,而不是路径,所以这不是我
我正在制作一个基于文档的 Cocoa 应用程序,其中文档是动态文件的集合(用户可以添加或删除文件)。特别是,保存和打开操作应尽可能快。 如果我正确理解文档,我应该使用 NSFileWrapper并实现
我在将 NSFileWrapper 文档与 iCloud 同步时遇到问题。我能够创建我的包装器并将其保存到我无处不在的容器中。 当我尝试从创建它的设备读取它时,它起作用了。当我尝试从另一台从 iClo
很抱歉,如果这很明显,但我正在为如何从 NSFileWrapper 和 docs were not particular enlightening. 中提取组件而苦苦挣扎。 我有两个包装器。一个包含一
如何播放给定 NSFileWrapper 的电影? 我希望在 MPMoviePlayerController 中找到一个 initWithData: 构造函数(如 AVAudioPlayer ),但只
我正在查看 NSFileWrapper 类,它在 iOS 上将许多文件组合成一个逻辑文件。 ( demo ) 其他平台如何与这种格式互动?通过电子邮件/http 发送此文档类型时会发生什么情况? 最佳
NSFileWrapper 的 serializedRepresentation 在导入 Cocoa 框架时返回不适当的大数据,而不仅仅是导入 Foundation 框架。我怎样才能阻止 serial
我有一个基于 UIDocument 的应用程序,它使用 NSFileWrapper 来存储数据。 “主”文件包装器包含许多其他目录文件包装器,每个包装器代表文档的不同页面。 每当我在保存 UIDocu
我有一个基于 UIDocument 的应用程序,它使用 NSFileWrapper 来存储数据。 “主”文件包装器包含许多其他目录文件包装器,每个包装器代表文档的不同页面。 当保存一个只有一小部分页面
我有以下 Objective-C 代码: NSFileWrapper* fileWrapper; NSMutableDictionary* wrappers = [NSMutableDictionar
我是一名优秀的程序员,十分优秀!