我正在为此目录中的文件创建另一个安全范围书签:
NSURL *musicFolder = /* Secured URL Resolved from a NSData,bookmark not stale */;if (![musicFolder startAccessingSecurityScopedResource]) { NSLog(@"Error accessing bookmark.");}Nsstring *file = @"myfile.txt"; /* This file exists insIDe the directory */NSURL *pathURL = [musicFolder URLByAppendingPathComponent:file];NSError *systemError;NSData *bookmarkData = [pathURL bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope includingResourceValuesForKeys:nil relativeToURL:nil error:&systemError];[musicFolder stopAccessingSecurityScopedResource];if (!bookmarkData) { NSLog(@"%@",systemError);}
bookmarkData和systemError都没有结束,这不是很有用…
这是甚么支持还是只能从系统获得有效的安全范围书签?
解决方法 在我的测试程序中,这个工作正常.我怀疑文件名的URL附加在你的情况下是失败的(但这是一个巨大的猜测),因为它是唯一的东西看起来有很大的不同.我注意到,为解决位置的安全网址是:文件://本地主机/用户/爸爸/桌面/ TestFolder applesecurityscope = 343335323030663066393432306234363030346263613464636464643130663635353065373030373b30303030303030303b303030303030303030303030303032303b636f6d2e6170706c652e6170702d73616e64626f782e726561642d77726974653b30303030303030313b30313030303030323b303030303030303030326461363838663b2f75736572732f74796c65722f6465736b746f702f74657374666f6c646572
这是另一个原因,我想知道附加是否是问题.
在我的测试中,我有用户选择该文件夹,创建安全范围的书签,然后将其保存在用户默认值中.
然后我退出重新启动应用程序,并通过菜单命令我得到该书签,然后解决它.然后我添加了一个案例,我将解决的书签用于一个文件夹,并为该文件夹中的文件创建一个新的书签.
似乎工作正常
在我的测试中,它正在工作,我得到这样的文件的路径:
NSURL * resolvedURL = [NSURL URLByResolvingBookmarkData: data options: NSURLBookmarkResolutionWithSecurityScope relativeToURL: nil bookmarkDataIsstale: &isstale error: &error];... // (error checking)[resolvedURL startAccessingSecurityScopedResource];NSArray * files = [[NSfileManager defaultManager] contentsOfDirectoryAtURL: resolvedURL includingPropertIEsForKeys: @[NSURLLocalizednameKey,NSURLCreationDateKey] options: NSDirectoryEnumerationSkipsHIDdenfiles error: &error];if ( files != nil ){ NSURL * fileURL = [files objectAtIndex: 0]; // hard coded for my quick test NSData * newData = [fileURL bookmarkDataWithOptions: NSURLBookmarkCreationWithSecurityScope includingResourceValuesForKeys: nil relativeToURL: nil error: &error]; if ( newData != nil ) { NSLog(@"it's good!"); } .... // error checking and logging.
如果没有让你在正确的轨道上,我将需要看更多的代码(你可能需要做一个简单的例子).
请注意,在我的情况下,我正在解析书签,并调用startAccessingSecurityScopedResource,即使我刚刚获得了url&创建书签(当我尝试从PowerBox(openPanel)中获取的路径创建一个书签时,它失败,出现错误256).
一些配置细节:OS X 10.8.4,Xcode 5(从今天9/18/2013的第一个公开发布).
总结以上是内存溢出为你收集整理的可可 – 从包含该文件的目录之一创建文件的安全范围书签全部内容,希望文章能够帮你解决可可 – 从包含该文件的目录之一创建文件的安全范围书签所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)