小编bri*_*dge的帖子

永久NSManagedObjectID不是那么永久?

我在处理CoreData中的对象ID时遇到问题.我正在使用MagicalRecord以方便并且有3个上下文:私有队列工作上下文,UI的主队列上下文和工作上下文的父级,以及作为主上下文的父级的私有队列保存上下文.

我的目标是在工作上下文中创建一个对象,保存到持久存储,将它的objectID URL保存到NSUserDefaults,然后能够使用objectID拉出该MO.但是,我发现在保存对象的永久ID后正在改变.

在下面的控制台输出中,您可以看到在我请求永久ID后,我得到的值是"F474F6EE-A225-456B-92EF-AB1407336F15/CDBaseAccount/p1"但稍后当我列出CD中的所有对象时,唯一的对象就在那里ID为"F474F6EE-A225-456B-92EF-AB1407336F15/CDBaseAccount/p2".p1 vs p2,发生了什么?

码:

  NSManagedObjectContext *c = [NSManagedObjectContext MR_contextThatPushesChangesToDefaultContext];
  [c performBlockAndWait:^{

      NSArray *all = [CDBaseAccount MR_findAllInContext:c];
      NSLog(@"count: %d", all.count);
      NSLog(@"all accounts = %@", all);

      CDBaseAccount *a = [CDBaseAccount MR_createInContext:c];
      a.accountName = @"foo";

      [c MR_saveNestedContexts];

      NSLog(@"temp a.objectID = %@", a.objectID);

      NSError *error;
      if (![c obtainPermanentIDsForObjects:@[a] error:&error]) {
          NSLog(@"perm id error: %@", error);
          return;
      }

      NSLog(@"perm a.objectID = %@", a.objectID);

      NSURL *u = a.objectID.URIRepresentation;

      dispatch_async(dispatch_get_main_queue(), ^{
          NSManagedObjectContext *d = [NSManagedObjectContext MR_defaultContext];

          NSArray *all = [CDBaseAccount MR_findAllInContext:d];
          NSLog(@"count: %d", all.count); …
Run Code Online (Sandbox Code Playgroud)

core-data nsmanagedobject magicalrecord

10
推荐指数
1
解决办法
5038
查看次数

使用Xcode 4子项目中的静态库和捆绑产品

我有一个包含2个项目的工作区:

  1. 一个包含2个产品的项目:静态库和资源包
  2. 构建iOS应用程序的项目.

第一个项目已作为第二个项目下的子项目参考添加.我有静态库建设很好,它链接到应用程序,一切都很好.但是,我似乎无法在应用程序中包含资源包.

该捆绑包已添加到应用程序的"构建"方案中.

我已经尝试将Resources.bundle拖入应用程序的"复制构建资源"阶段,但这会在构建时导致此错误:

.../DerivedData/MyProject-eyuldesiktlginanzifvzcfrtmgl/Build/Products/Debug-iphonesimulator/Resources.bundle: No such file or directory
Run Code Online (Sandbox Code Playgroud)

所以我查看了派生数据目录,我看到了Resources.bundle

MyProject-eyuldesiktlginanzifvzcfrtmgl/Build/Products/Debug 
Run Code Online (Sandbox Code Playgroud)

MyProject-eyuldesiktlginanzifvzcfrtmgl/Build/Products/Debug-iphonesimulator.  
Run Code Online (Sandbox Code Playgroud)

我认为这是因为捆绑包不是特定于平台的.所以我尝试添加一个构建阶段来将捆绑包复制到产品目录.导致此构建错误:

.../DerivedData/MyProject-eyuldesiktlginanzifvzcfrtmgl/Build/Products/Debug-iphonesimulator/Resources.bundle depends on itself.  This target might include its own product.
Run Code Online (Sandbox Code Playgroud)

但是没有Debug-iphonesimulator/Resources.bundle文件,因此我没有看到这种依赖性来自何处.任何建议将不胜感激.

bundle static-libraries subproject xcode4

9
推荐指数
1
解决办法
3463
查看次数

UIView动画闪烁自动反转

我正在尝试将指示器设置为空表单字段的动画,因此我使用下面的方法设置动画到位置,反转动画,然后重复.在模拟器中,这工作正常,在我的3GS上,看起来在调用完成块时有一个闪烁.指示器在中间位置短暂显示,而不是在其原点返回.

有关为什么会发生这种情况的任何想法?谢谢.

- (void)bounceFormIndicator {
    if (formIndicator.superview == nil) {
        return;
    }

    int bounceDistance = 24;

    [UIView animateWithDuration:0.6 
                          delay:0 
                        options:UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionAllowUserInteraction
                     animations:^{
                        CGRect indicatorFrame = formIndicator.frame;
                        indicatorFrame.origin.x += bounceDistance;
                        formIndicator.frame = indicatorFrame;
                     }completion:^(BOOL finished){
                        CGRect indicatorFrame = formIndicator.frame;
                        indicatorFrame.origin.x -= bounceDistance;
                        formIndicator.frame = indicatorFrame;
                        [self bounceFormIndicator];
                     }];
}
Run Code Online (Sandbox Code Playgroud)

animation uikit

7
推荐指数
1
解决办法
3165
查看次数

点击UIKeyboard时会触发hitTest

我正在尝试修复一个涉及UIView hitTest的错误:withEvent:当触摸在UIKeyboard上时,在我的视图上调用,但只有在应用程序处于后台之后.

它发生在我的应用程序中,具有复杂的视图层次结构,所以我在一个只有2个视图的应用程序中重现它:

  • 1 UIView 768x1024(全屏)
  • 1 UITextView 200x200位于全屏视图的上半部分

行为如下:

  • 点击文本视图会导致全屏视图的hitTest方法触发,文本字段成为第一响应者,然后键盘将按预期显示.点击键盘键工作正常.
  • 现在解雇键盘.
  • 将应用程序发送到后台.
  • 然后恢复应用程序.
  • 再次使textview成为第一响应者.这是麻烦,现在当点击键盘上的键时,全屏视图的hitTest方法正在激活.

我在iOS 5 iPad上看到这个2.但是只能在设备上,而不是在模拟器中.知道为什么hitTesting会以这种方式搞砸了吗?谢谢.

hittest first-responder ios ios5

7
推荐指数
2
解决办法
1169
查看次数

使用iOS Security.framework生成自签名证书?

是否有可能,如果是这样,怎么样?我正在使用需要客户端证书的协议,因此我想生成一次并将其存储在钥匙串中以备将来使用.

我目前正在使用安全框架通过SecKeyGeneratePair生成密钥对,但有没有办法在X.509证书中打包生成的公钥,并使用私钥添加它以创建新的SecIdentity?我想应该有一个办法,因为安全框架应该是在iOS和Mac和钥匙串访问相同的Mac上可以生成自签名的证书.

OpenSSL是一个选项,但如果可能的话,我宁愿使用内置的安全框架.谢谢.

security x509 ios

5
推荐指数
1
解决办法
2151
查看次数