跳转到内容
彼岸论坛
欢迎抵达彼岸 彼岸花开 此处谁在 -彼岸论坛

[iDev] 有没有大佬帮看一下,沙箱选择文件夹突然就没有权限了,现在可以列出一级文件,二级目录的文件就打不开了,昨天之前还是可以的


小天管理

已推荐帖子

load files error: Error Domain=NSCocoaErrorDomain Code=257 "The file “common” couldn’t be opened because you don’t have permission to view it."

选择文件的代码


Button {
                    reset()
                    isFileImporterPresented = true
                } label: {
                    Label("Choose Folder",systemImage: "square.and.arrow.up").fileImporter(isPresented: $isFileImporterPresented, allowedContentTypes: [.directory]) { result in
                        let _ = result.map { url in
                            tryGetWorkspaceInfo(url)
                        }
                        
                        
                    }
                }.padding(4)

保存 bookmark


try url.bookmarkData(options: [.withSecurityScope], includingResourceValuesForKeys: nil, relativeTo: nil)

从 bookmark 获取 url

if item.bookmark == nil{
            return
        }
        var isStale = false
        do{
            let url = try URL(resolvingBookmarkData: item.bookmark!, options: [.withSecurityScope,.withoutImplicitStartAccessing,.withoutMounting],bookmarkDataIsStale: &isStale)
            root = url
            print("标签过期",isStale)
            if(isStale){
                return
            }
            let statStr = SVN.Util.shared.stat(url: url.path)
            stat = SVN.Stat.parse(str: statStr)
            //            print(stat?.entries[0].status)
            let _ = url.startAccessingSecurityScopedResource()
            files =  FileItem.loadFiles(url: url) ?? []
            url.stopAccessingSecurityScopedResource()
        }catch{
            
        }

加载文件夹的代码


public static func loadFiles(url:URL) -> [FileItem]? {
        var result:[FileItem]? = nil
        do{
            var isDir:ObjCBool = false
            
            FileManager.default.fileExists(atPath: url.path, isDirectory: &isDir)
            if(!isDir.boolValue){
                return nil
            }
            let _ = url.startAccessingSecurityScopedResource()
            let files = try FileManager.default.contentsOfDirectory(at: url, includingPropertiesForKeys: nil,options: [])
            url.stopAccessingSecurityScopedResource()
            
            
            
            result = []
            for file in files {
                var isCurrentDir:ObjCBool = false
                FileManager.default.fileExists(atPath: file.path, isDirectory: &isCurrentDir)
                let item = FileItem(url: file,isDir: isCurrentDir.boolValue)
                //                item.children = FileItem.loadFiles(url: file)
                result?.append(item)
            }
            
            
            //            sorted files
            
            let dirs = result!.filter({ $0.isDir }).sorted { cur, next in
                return cur.url.lastPathComponent.localizedCaseInsensitiveCompare(next.url
                    .lastPathComponent) == .orderedAscending
            }
            let others = result!.filter({ !$0.isDir }).sorted { cur, next in
                return cur.url.lastPathComponent.localizedCaseInsensitiveCompare(next.url
                    .lastPathComponent) == .orderedAscending
            }
            
            result = dirs + others
            
        }catch{
            print("load files error:",error)
        }
        return result
    }
意见的链接
分享到其他网站

加入讨论

您现在可以发表并稍后注册. 如果您是会员,请现在登录来参与讨论.

游客
回复主题...

×   粘贴为富文本.   粘贴为纯文本来代替

  只允许使用75个表情符号.

×   您的链接已自动嵌入.   显示为链接来代替

×   您之前的内容已恢复.   清除编辑器

×   您无法直接粘贴图片.要从网址上传或插入图片.

  • 游客注册

    游客注册

  • 会员

  • 最新的状态更新

    没有最新的状态更新
  • 最近查看

    • 没有会员查看此页面.
×
×
  • 创建新的...