小编Geo*_*rge的帖子

处理陈旧的NSURL书签的正确方法是什么?

从安全范围书签解析NSURL时,如果用户重命名或移动了该文件或文件夹,则书签将过时.Apple的文档说明了陈旧性:

isStale

返回时,如果是,则书签数据是陈旧的.您的应用应使用返回的URL创建新书签,并使用它代替现有书签的任何存储副本.

不幸的是,这对我很少有用.它有可能在5%的时间内工作.尝试使用返回的URL创建新书签会导致错误,代码256,并且在控制台中查看会显示来自sandboxd的消息,说明在更新的URL上拒绝文件读取数据.

注意如果重新生成书签确实有效,它似乎只在第一次重新生成时才起作用.如果再次移动/重命名文件夹/文件似乎永远不会工作.

我最初如何创建和存储书签

-(IBAction)bookmarkFolder:(id)sender {
  _openPanel = [NSOpenPanel openPanel];
  _openPanel.canChooseFiles = NO;
  _openPanel.canChooseDirectories = YES;
  _openPanel.canCreateDirectories = YES;
  [_openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) {
    if (_openPanel.URL != nil) {
      NSError *error;
      NSData *bookmark = [_openPanel.URL bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope
                                  includingResourceValuesForKeys:nil
                                                   relativeToURL:nil
                                                           error:&error];
      if (error != nil) {
        NSLog(@"Error bookmarking selected URL: %@", error);
        return;
      }
      NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
      [userDefaults setObject:bookmark forKey:@"bookmark"];
    }
  }];
}
Run Code Online (Sandbox Code Playgroud)

解析书签的代码

-(void)resolveStoredBookmark {
  NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
  NSData *bookmark = [userDefaults …
Run Code Online (Sandbox Code Playgroud)

cocoa nsurl security-scoped-bookmarks

23
推荐指数
1
解决办法
2723
查看次数

每当我在Git中更改分支时,Xcode 4构建方案就搞砸了

在Xcode 4中,当我在iOS项目中工作时,Xcode工具栏中的Scheme下拉菜单通常会显示iPhone XX模拟器,iPad XX模拟器和iOS设备的方案.

在完成影响*.xcodeproj/project.pbxproj文件的事情后更改分支时,我的所有方案都从方案下拉列表中消失.如果我关闭项目并重新打开它,它们会回来.这非常烦人.

这是我正在做的事情:

  • 创建一个新的iOS相关项目
  • Stage +提交master分支中的所有内容
  • 创建并切换到新分支
  • 在项目中添加一个新类并全部保存(CMD + S +选项)或只是构建项目以保存所有内容.
  • 承诺改变
  • 切换回主分支

在这一点上,我的计划被搞砸了,我必须关闭项目并重新打开它以取回它们.

这是他们一开始的样子: 在此输入图像描述

按照我列出的步骤后,这是他们的样子: 在此输入图像描述

有没有人知道这方面的方法还是这只是Xcode中的一个错误?几个月前我向Apple提交了一份关于它的错误报告,但没有收到回复.我在开发者论坛中也没有收到有关它的问题的回复.

更新:如果您有一个包含多个目标的项目,则只有在切换分支后,所选目标的方案才会搞砸.

更新:这是我的.gitignore

# the build
build

# temp nibs and swap files
*~.nib
*.swp

# OS X folder attributes
.DS_Store

# user-specific XCode stuff
*.pbxuser
*.mode1v3
*.mode2v3
*.perspectivev3
*.xcuserstate
project.xcworkspace/
xcuserdata/
Run Code Online (Sandbox Code Playgroud)

git xcode ios xcode4 git-branch

21
推荐指数
1
解决办法
2646
查看次数

标签 统计

cocoa ×1

git ×1

git-branch ×1

ios ×1

nsurl ×1

security-scoped-bookmarks ×1

xcode ×1

xcode4 ×1