文档只是声明setAutosavingDelay在共享文档控制器上设置为> 0但应该在调用之后
[[NSDocumentController sharedDocumentController] setAutosavingDelay:2.0];
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,自动保存似乎不起作用:我既没有看到任何内容~/Library/Autosave Information/,也没有看到
[[[NSDocumentController sharedDocumentController] currentDocument] autosavedContentsFileURL]
Run Code Online (Sandbox Code Playgroud)
初始化.
请注意,在我的应用程序中,正常加载和保存工作正常(keyedarchivers,我的文档的基于nscoding的类等).
我注意到Apple开始使用zip存档来替换iWork应用程序中的文档包(在Finder中显示为单个文件的文件夹).我正在考虑做同样的事情,因为我一直得到与我的文档包相关的支持电子邮件在将它们复制到Windows文件服务器时被破坏.
我的问题是在基于NSDocument的应用程序中执行此操作的最佳方法是什么?
我想最简单的方法是创建一个目录文件包装器,创建它的存档并在NSDocument中返回它
- (NSFileWrapper *)fileWrapperOfType:(NSString *)typeName error:(NSError **)outError
Run Code Online (Sandbox Code Playgroud)
但我不明白如何创建NSFileWrapper的zip存档.
我只是想知道是否可以在NSDocumentDirectory中创建一个子文件夹并将数据写入该创建的文件夹,如:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dirPath =[[paths objectAtIndex:0] stringByAppendingPathComponent:@"TestFolder"];
NSString *filePath =[dirPath stringByAppendingPathComponent:@"testimage.jpg"];
[imageData writeToFile:filePath atomically:YES];
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的支持!
我有一个基于文档的应用程序,到目前为止只是为每个文档编辑一个新窗口的文档.
我现在正在添加创建项目的能力,这本身就是一个文档.该项目将包含一个文件列表,可以使用(希望)与我现有的NSDocument子类相同的代码进行编辑,但文档编辑器将嵌入到项目窗口中,而不是在新窗口中打开.
例如,Xcode如何在编辑器窗格中打开每个文件,而不使用每个文档的新窗口?我假设它使用基于文档的体系结构,因为它的行为与任何其他基于文档的应用程序非常相似,但单窗口事物除外.
因为NSDocument 必须(根据文档)拥有它自己的窗口控制器,是否可以将该窗口"嵌入"另一个窗口(即在我的项目窗口内),使得chrome不可见以产生单个窗口的效果?
编辑:这个关于CocoaDev的讨论看起来非常有用:基于文档的应用程序,所有文档都有一个窗口
大家好我正在处理一个记录用户声音并将其保存到NSDocumentDirectory的应用程序.数据文件保存得很好.但问题是我想播放这些文件.我正在使用表视图来填充它NSDocumentDirectory中的文件数量.但是该表只显示当前声音文件的一个单元格.我在某处做错了请帮助我.我正在使用此代码进行播放.
-(void)PlayAudio
{
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"strffdsa %@",documentsDirectory);
NSURL *fileURL = [NSURL fileURLWithPath:recorderFilePath];
player = [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: nil];
player.numberOfLoops = 0;
//[fileURL release];
[player play];
[player setDelegate: self];
}
Run Code Online (Sandbox Code Playgroud)
其中,recorderFilePath是文件的路径.每次在NSDate frmattor的帮助下,路径都是新的.但是没有得到如何使用驻留在DocumentDirectory中的所有文件填充表视图.
请帮助我......我是这项技术的新手.
在此先感谢所有........
我不得不将大文件大小的歌曲从iTunes库转换为较小的8K歌曲文件.
当我执行转换异步时,即使写入doc文件夹未完成,bool也总是返回true.目前我正在使用10秒的延迟再次调用该功能,它在iPhone 5s的临时工作正常,但我想迎合较慢的设备.
请在我的代码上给我一些指针/推荐.
-(void)startUploadSongAnalysis
{
[self updateProgressYForID3NForUpload:NO];
if ([self.uploadWorkingAray count]>=1)
{
Song *songVar = [self.uploadWorkingAray objectAtIndex:0];//core data var
NSLog(@"songVar %@",songVar.songName);
NSLog(@"songVar %@",songVar.songURL);
NSURL *songU = [NSURL URLWithString:songVar.songURL]; //URL of iTunes Lib
// self.asset = [AVAsset assetWithURL:songU];
// NSLog(@"asset %@",self.asset);
NSError *error;
NSString *subString = [[songVar.songURL componentsSeparatedByString:@"id="] lastObject];
NSString *savedPath = [self.documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"audio%@.m4a",subString]];//save file name of converted 8kb song
NSString *subStringPath = [NSString stringWithFormat:@"audio%@.m4a",subString];
if ([self.fileManager fileExistsAtPath:savedPath] == YES)
[self.fileManager removeItemAtPath:savedPath error:&error];
NSLog(@"cacheDir %@",savedPath);
//export low bitrate song to …Run Code Online (Sandbox Code Playgroud) objective-c nsdocument ios avassetwriter avassetexportsession
我有一个NSDocument可以保存为多种文件类型的基于应用程序,因此在保存文档时,NSDocument 有助于将弹出按钮添加到保存面板作为其附件视图,让用户选择他们想要保存的类型。好的。
现在,我有另一个视图要包含在保存面板中,但是如果我只是覆盖-[NSDocument prepareSavePanel:]并用于-setAccessoryView:插入我自己的视图,它会替换文件类型弹出按钮,因此只有我的视图出现在保存面板而不是弹出按钮。
有没有什么办法NSDocument提供同时拥有我自己的观点和其文件类型弹出出现在保存面板在同一时间?看起来我可以抓住现有的附件视图,将它与我自己的附件一起修补到容器视图中,然后将其放回,但这似乎很hackish,并且想知道是否有更好的方法来做到这一点,我已经错过了。
我试图编写一个应用程序,可以打开NSDocument子类中的任何文件夹,但无法找出正确的Info.plist设置.重要的是我的应用程序不应该使用捆绑包,也不应该使用具有特定文件扩展名的文件夹,只能打开任何文件夹.
我尝试了什么:
如何在打开的文件对话框中打开任何文件夹?
假设我有一个NSDocument应用程序,它支持将文件拖放到其图标上以启动应用程序并打开该文件.我的NSApplicationDelegate已经实现了
- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename
Run Code Online (Sandbox Code Playgroud)
通过文件拖放调用.我希望能够打破并开始调试内部,application:openFile:但必须从Xcode启动应用程序以使用拖放启动.
这样做有什么好办法?
我有一个基于文档的应用程序。我重写NSDocument'smakeWindowControllers以实例化自定义窗口控制器。它的初始化程序调用init(window: NSWindow?)其超类,即它不使用任何涉及 nib 文件的初始化程序。
如何进行级联工作(请参阅shouldCascadeWindows)?目前,每个窗口都在第一个屏幕上的相同位置打开。
我可以通过调用某些东西来重用现有的级联逻辑吗NSWindowController?
如果我必须自己手动实现,我应该如何最好地获取最顶层文档窗口的位置?文档的潜在多个窗口中的哪一个应该是计算偏移量的窗口?