我有一个基本问题是将openWithCompletionHandler:(UIManagedDocument)与主要活动同步.
情况:我有一个管理共享UIManagedDocument的单例类.此类提供其中应递送一种方法的在正常状态下的文档(即,创建或打开它,无论是neccessary).但是因为openWithCompletionHandler:它在后台异步执行它的主要工作,我的程序应该等待设置fetchedResultsController直到文档真的打开.当数据库未准备好时,"viewWillAppear"方法(当前)不会产生有用的输出.等待对我来说没问题,但收到通知可能是更好的方法.也许viewWillAppear不是setupFetchedResultsController的正确点,因为没有在runloop中调用.
是否有标准模式来实现这一目标?
更多的背景(我认为不是那么重要)我正在开发一个涉及CoreData UIManagedDocument的iOS 5.1应用程序.我类似于去年秋天在iTunes-U的斯坦福大学课程第14课的例子.一切都工作正常,直到我试图将UIManagedDocument的处理从UITableViewController类转移到处理我的文档的单独的类.在原始版本中,FetchedResultsController在完成处理程序中设置.
我UIDocumentInteractionController用于文件预览:
interactionController = UIDocumentInteractionController.FromUrl(url);
interactionController.Delegate = new UIDocumentInteractionControllerDelegateClass(this);
InvokeOnMainThread(delegate{interactionController.PresentPreview(true);}
});
Run Code Online (Sandbox Code Playgroud)
如何在视图顶部添加自定义按钮以执行某些操作?
在iOS 6中,点击Photos应用程序中的操作按钮会显示标准的UIActivityViewController:

从Messages中执行相同操作会提供一组不同的选项.这看起来像是在使用UIDocumentInteractionController api来拉取所有可以处理图像的应用程序.

我的问题是双重的:
如何进入"消息"操作菜单?Tumblr和Halftone,仅举几例,已经做到了......我似乎无法找到文档.
如何显示消息样式的操作菜单?当我呈现一个UIActivityViewController它没有那些选项...只是标准设置facebook/twitter/copy/print/save to camera roll/etc.
谢谢!
sharing ios uidocumentinteraction uidocument uiactivityviewcontroller
我正在关注有关iCloud和核心数据的WWDC 2013会议.我真的希望看到有任何新的视频UIManagedDocument或UIDocument.您可能还记得,这些类理论上提供了一种非常简单的方法来在本地和iCloud中使用(UIManagedDocument)或不使用CoreData(UIDocument)来保存数据.但是这些概念已经或者仍然存在一些非常烦人的基于系统的错误,特别是在设备之间同步数据时,请参见此处.
但是,没有视频覆盖UIManagedDocument/ UIDocument和iCloud主题.视频"Core Data和iCloud有什么新内容?" 仅介绍使用Core Data持久存储的经典方法,该存储由新API扩展以自动覆盖后备存储和同步.有什么事给任何信息UIManagedDocument/ UIDocument?他们是否放弃并将经典方法视为使用Core Data和iCloud同步应用程序的更好方法?
当我UIDocumentInteractionController用来允许用户通过Instagram分享它确实有效时,它会提供"打开方式"和"Instagram"作为选项之一的选项......问题是它还会显示许多其他应用程序,如"Facebook" "和"推特"......
有什么方法我可以让它只提供在Instagram应用程序中打开的选项?
"Alternatively, if you want to show only Instagram in the application list (instead of Instagram plus any other public/jpeg-conforming apps) you can specify the extension class igo, which is of type com.instagram.exclusivegram."
extension class igo"
我的代码:
UIImage *imageToUse = [UIImage imageNamed:@"imageToShare.png"];
NSString *documentDirectory=[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *saveImagePath=[documentDirectory stringByAppendingPathComponent:@"Image.ig"];
NSData *imageData=UIImagePNGRepresentation(imageToUse);
[imageData writeToFile:saveImagePath atomically:YES];
NSURL *imageURL=[NSURL fileURLWithPath:saveImagePath];
docController = [UIDocumentInteractionController interactionControllerWithURL:imageURL];
docController.delegate = self;
docController.annotation = [NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:@"This is …Run Code Online (Sandbox Code Playgroud) 根据我的理解,UIDocument该类可以跟踪未保存的文件更改,甚至锁定文件,以便多个人无法检出.但是如果用户强制退出应用程序而不保存或应用程序崩溃会发生什么?我如何将未保存的更改恢复为a,UIDocument以便在应用重新启动时重新打开UIDocument最近未保存的更改?我是否需要在更改每个文件之前制作副本并更改临时副本,直到用户保存更改为止?或者Apple提供更简单的实现?我还考虑将Data文件内容和undoManager每个UIDocument实例的编码和存储定期作为缓存.那会有用吗?
我一直在研究一个新的基于文档的应用程序,并且非常高兴新的UIDocumentBrowserController ...试图为文档浏览器推出我自己的解决方案UI很棘手!
我在浏览器创建后打开文档时遇到了一些麻烦.
现在发生的是,当我选择在文档浏览器中创建新文档时,会按预期创建和打开文档,但会记录错误消息.但是,在关闭文档后,即使显示文档,也无法立即或在后续启动时重新打开文件.但是,一个奇怪的线索是,如果我在创建文档后停止运行应用程序,但没有向其添加新信息(触发保存周期),并再次运行项目,我可以正确打开文件.这让我觉得文件被保存的方式就是问题所在.(注意:在此阶段,我正在努力使本地,非/ icloud实现工作,然后我继续进行icloud实现.)
以下是文档保存到磁盘时代码中任何一点的错误消息(或至少大部分时间!):2017-06-20 13:21:58.254938-0500布道设计2 iOS [22454:5000138] [ default] [ERROR]无法获取项目文件的属性值:/// Users/stevenhovater/Library/Developer/CoreSimulator/Devices/9A4364F2-B3A1-4AD9-B680-FB4BC876C707/data/Containers/Data/Application/DD534ED8-C4A3 -40FE-9777-AED961976878 /文档/无标题-9.sermon.错误:错误域= NSFileProviderInternalErrorDomain代码= 1"不允许读者访问该URL." UserInfo = {NSLocalizedDescription =不允许读者访问该URL.}
我怀疑问题在于我的文档类型plists,我试图通过在wwdc 2017 session 229中模仿视频中的设置来设置.
我的文档被一个NSData对象所包围,使用我所采用的UIDocument非常标准的子类实现.(我省略了生成缩略图的代码)
override func contents(forType typeName: String) throws -> Any {
print("Saving Document Changes")
if sermon != nil {
let newData = NSKeyedArchiver.archivedData(withRootObject: sermon!)
return newData
} else {
let newData = NSKeyedArchiver.archivedData(withRootObject: Sermon())
return newData
}
}
override func fileAttributesToWrite(to url: URL, for saveOperation: UIDocumentSaveOperation) throws -> [AnyHashable : Any] {
let thumbnail:UIImage = self.createThumbnail() …Run Code Online (Sandbox Code Playgroud) 我的iOS应用在生产时崩溃UIDocument.revert(toContentsOf url: URL,
completionHandler: ((Bool) -> Void)? = nil)。从错误消息看,好像该文档应该被还原到其自身。例如:
**** Terminating app due to uncaught exception
'NSInternalInconsistencyException',
reason: 'attempt to revert document at URL (
file:///private/var/mobile/Library/Mobile%20Documents/
iCloud~com~myapp/Documents/sampledocument.test)
to URL (
file:///private/var/mobile/Library/Mobile%20Documents/
iCloud~com~myapp/Documents/sampledocument.test)
that is not yet open'
Run Code Online (Sandbox Code Playgroud)
我没有任何特定的代码来还原文档版本,而且我自己也无法重现此版本,但是它对许多用户来说都是这样。
UIDocument会尝试还原其内容,为什么会尝试将同一文件还原为其自身?
这可能是关闭文档但由于某种原因试图放弃更改的竞争条件吗?
可以说我有一个NSFileWrapper目录.该目录由多个级别的目录和文件组成.有些文件很大.所有这些文件都加载到内存中,还是懒得加载?
如果将它们加载到内存中,是否有其他NSFileWrapper类似功能的替代方法无法将文件加载到内存中?我能挂进去的东西UIDocument?
这适用于基于文档的应用程序,该应用程序使用UIDocument与iCloud同步的应用程序.文档可以在其中嵌入图像和视频.每个图像/视频都有一个HTML文档中显示的预览图像(缩略图).全尺寸图像或视频不应加载到内存中,而应按需加载.
我还需要一种方法来添加资源而不将其加载到内存中.像"initWithAsset:(ALAsset*)"这样的东西是理想的.
如何在不关闭和重新打开文档的情况下使用打开的UIDocument重命名文档文件?关闭(保存),移动和重新打开文档需要太长时间.
我有以下代码移动文件:
NSFileCoordinator* fileCoordinator = [[NSFileCoordinator alloc] initWithFilePresenter:nil];
[fileCoordinator coordinateWritingItemAtURL:oldPath
options:NSFileCoordinatorWritingForMoving
writingItemAtURL:newPath
options:NSFileCoordinatorWritingForReplacing
error:&coordinatorError
byAccessor:^(NSURL *newURL1, NSURL *newURL2) {
// Rename the file.
NSFileManager* fileManager = [NSFileManager defaultManager];
[fileCoordinator itemAtURL:oldPath willMoveToURL:newPath];
[fileManager moveItemAtURL:newURL1 toURL:newURL2 error:nil];
[fileCoordinator itemAtURL:oldPath didMoveToURL:newPath];
}];
Run Code Online (Sandbox Code Playgroud)
根据文档UIDocument工具presentedItemDidMoveToURL:更新它fileURL(参见https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDocument_Class/)
但是,当文档打开时调用上面的代码时,它会挂起,大概等待锁定oldPath(-[NSFileCoordinator(NSPrivate) _blockOnAccessClaim:]).如果没有生活,工作正常UIDocument.
相关的,最佳答案建议关闭并重新打开UIDocument:将UIDocument移动到文件系统上的新位置的正确方法是什么?
uidocument ×10
ios ×6
objective-c ×2
c# ×1
cocoa-touch ×1
concurrency ×1
core-data ×1
instagram ×1
recovery ×1
sharing ×1
swift ×1
uikit ×1
uti ×1
xamarin.ios ×1