我无法搞清楚NSBundle和DocumentDirectory数据,我有一个相机图片" imageView ",我正在保存NSDocumentDirectoy,然后想要检索它附加到电子邮件,
这里有保存代码:
- (IBAction)saveImage {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
UIImage *image = imageView.image; // imageView is my image from camera
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:savedImagePath atomically:NO];
}
Run Code Online (Sandbox Code Playgroud)
这是新的获取数据代码:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
NSData *myData = [[[NSData alloc] initWithContentsOfFile:appFile] autorelease];
[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"savedImage"];
Run Code Online (Sandbox Code Playgroud) 我在基于文档的架构的单个窗口中做了一些疯狂的多个文档,我完成了95%.
我有这种双层文档架构,其中父文档打开并配置窗口,提供"子"文档列表.当用户选择其中一个子项时,该文档使用相同的窗口控制器打开,并在窗口中放置一个NSTextView.窗口控制器的文档关联被更改,以便"编辑的点"和窗口标题跟踪当前选择的文档.想想Xcode项目以及编辑其中的不同文件时会发生什么.
要以伪表格形式放置代码,在打开子文档时,会在父文档中调用此类方法.
-(void)openChildDocumentWithURL:(NSURL *)documentURL {
// Don't open the same document multiple times
NSDocument *childDocument = [documentMapTable objectForKey:documentURL];
if (childDocument == nil) {
childDocument = [[[MyDocument alloc] init] autorelease];
// Use the same window controller
// (not as bad as it looks, AppKit swaps the window's document association for us)
[childDocument addWindowController:myWindowController];
[childDocument readFromURL:documentURL ofType:@"Whatever" error:NULL];
// Cache the document
[documentMapTable setObject:childDocument forKey:documentURL];
}
// Make sure the window controller gets the document-association swapped if the doc …Run Code Online (Sandbox Code Playgroud) 我使用UIWebView加载本地html,并且在Objc创建的html中有一个PNG文件.
修改PNG文件后,我在UIWebView中重新加载html,但图像不会改变.但是,如果我退出应用程序并重新打开它,图像文件将更改为新的.
我已经在Documents with Finder中检查了PNG文件,所以我确定它已被修改,但旧的仍在UIWebView中.
所以,我认为这是一个UIWebView缓存问题,我试过:
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:url isDirectory:NO ] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:1]]; 要么 NSURLRequestReloadIgnoringCacheData
它们都不起作用,我无法更改文件名,因为PNG文件在很多地方使用(其他html和objc代码).
我也尝试过这个:
some.png?r=randomNumber
但它无法显示出来.
在本地html中使用本地图像文件时,如何清除UIWebView缓存?
我有一个基于NSDocument的应用程序和一个NSDocumentController子类.我的NSDocument使用文件URL和URL以及使用Web服务的自定义方案.
我使用自定义代码处理大部分加载和保存,包括-saveToURL:ofType:forSaveOperation:completionHandler:.+autosavesInPlace回报YES.
我遇到的问题:启动时不会恢复具有自定义URL方案的文档.具有文件URL方案的文档是 - 保存到文件的常规文档和自动保存的无标题文档.
在打开基于服务器的文档并退出应用程序后,似乎没有在重新启动时调用NSDocument方法.特别是,四个初始化程序都不会被调用:
-reopenDocumentForURL:withContentsOfURL:display:completionHandler:也不调用NSDocumentController方法.
文件的可恢复状态如何以及何时编码?他们如何以及何时解码?
我有一个基于NSDocument的应用程序,它使用filewrappers来保存和加载其数据.该文档可以拥有各种资源,因此我不想将所有内容加载到内存中.我可能会做一些根本错误的事情,但是一旦我更改了一个(内部)文件然后保存,我就无法读取任何尚未加载到内存中的文件.
我已将相关代码分离到一个单独的项目中以重现此行为,并得到相同的结果.基本流程如下:
如果用户想要编辑其他文件(sub2),则无法加载.出现的错误:
-[NSFileWrapper regularFileContents] tried to read the file wrapper's contents lazily but an error occurred: The file couldn’t be opened because it doesn’t exist.
Run Code Online (Sandbox Code Playgroud)这是我项目中的相关代码:
此代码可能更容易阅读这个要点:https: //gist.github.com/bob-codingdutchmen/6869871
#define FileName01 @"testfile1.txt"
#define FileName02 @"testfile2.txt"
/**
* Only called when initializing a NEW document
*/
-(id)initWithType:(NSString *)typeName error:(NSError *__autoreleasing *)outError {
self = [self init];
if (self) {
self.myWrapper = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:nil]; …Run Code Online (Sandbox Code Playgroud) 我有一个带有一些简单代码的NSDocument:
- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError {
self.string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
如果我在外部编辑器中更改文件,我如何得到通知,以便我可以处理它?我假设有一些内置的东西,但我找不到它.
我正在寻找内置于NSDocument中的东西.我知道FSEvent,但对于大多数基于文档的应用来说,这似乎太低了.
我在主窗口上使用NSOutlineView启动了一个基于文档的小应用程序.我在模型类中使用NSCoding协议将模型保存在文件中,一切都很好.
接下来我想保存用户界面(窗口大小和位置,大纲视图中的展开项目,选择......),我发现将恢复功能添加到Lion.
所以我尝试实现它,我在主窗口和大纲视图中添加了一个自动保存名称,设置了autosaveExpandedItems属性,并在大纲视图的数据源中实现了outlineView:itemForPersistentObject:和outlineView:persistentObjectForItem:方法.
这是有效的,但是当我创建/打开另一个文件然后关闭它时,其他文件的展开项状态将使用已关闭文件的状态进行设置.
这就像应用程序只为所有文档保存一个窗口而不为每个文档保存一个窗口.
我对自动保存和恢复有点失落,它是相同功能还是两个功能完全不同?
我可以用它来保存窗口状态还是需要我将它保存在我的模型中?
谢谢
我刚刚将iCloud支持添加到我正在处理的应用程序中.它工作得很好,除了当我打开没有文档焦点的应用程序时,iCloud打开文件对话框出现了,我不想要它!
在我的应用代表中,我有:
- (BOOL) applicationShouldOpenUntitledFile:(NSApplication *)sender
{
[mainWindowController.window makeKeyAndOrderFront:self];
return NO;
}
Run Code Online (Sandbox Code Playgroud)
我用它来显示我自己的自定义窗口.但是现在,将显示iCloud打开文件对话框和我自己的对话框.关于如何摆脱iCloud对话框的任何想法?

我很抱歉,如果这个论点已被涵盖,但经过一些研究后我发现没有什么精确的.
我需要创建一个基于文档的应用程序,其中文档实际上不是单个文件,而是目录中的文件的结构化集合.窗口将显示包含在文件夹中的pdf,具有特定的文件名,并使用文件夹中其他文件的信息进行丰富.我无法使用pdf注释来实现这一点,我真的需要将文件与pdf分开.
实现这一目标的最佳方法是什么?我找到的所有示例代码都使用单个文件..
我正在制作一个基于文档的Cocoa应用程序,其中文档是动态的文件集合(用户可以添加或删除文件).特别是,保存和打开操作应该尽可能快.
如果我正确理解文档,我应该使用NSFileWrapper并实现fileWrapperOfType:error和readFromFileWrapper:ofType:error:.但是,我找不到完整的代码示例.我该如何实现以下方法?
#pragma mark - NSDocument
- (NSFileWrapper *)fileWrapperOfType:(NSString *)typeName error:(NSError **)outError {
return nil;
}
- (BOOL)readFromFileWrapper:(NSFileWrapper *)fileWrapper ofType:(NSString *)typeName error:(NSError **)outError {
return YES;
}
#pragma mark - My methods
- (void) addFileToDocumentFromURL:(NSURL*)fileURL {
// Add a file to the document given the file URL
}
- (void) removeFileFromDocumentWithName:(NSString*)name {
// Remove a file from the document given the file name
}
Run Code Online (Sandbox Code Playgroud) nsdocument ×10
cocoa ×8
objective-c ×6
macos ×4
ios ×2
caching ×1
directory ×1
email ×1
icloud ×1
iphone ×1
nsresponder ×1
save ×1
uiwebview ×1