我在处理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) 我有一个包含2个项目的工作区:
第一个项目已作为第二个项目下的子项目参考添加.我有静态库建设很好,它链接到应用程序,一切都很好.但是,我似乎无法在应用程序中包含资源包.
该捆绑包已添加到应用程序的"构建"方案中.
我已经尝试将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文件,因此我没有看到这种依赖性来自何处.任何建议将不胜感激.
我正在尝试将指示器设置为空表单字段的动画,因此我使用下面的方法设置动画到位置,反转动画,然后重复.在模拟器中,这工作正常,在我的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) 我正在尝试修复一个涉及UIView hitTest的错误:withEvent:当触摸在UIKeyboard上时,在我的视图上调用,但只有在应用程序处于后台之后.
它发生在我的应用程序中,具有复杂的视图层次结构,所以我在一个只有2个视图的应用程序中重现它:
行为如下:
我在iOS 5 iPad上看到这个2.但是只能在设备上,而不是在模拟器中.知道为什么hitTesting会以这种方式搞砸了吗?谢谢.
是否有可能,如果是这样,怎么样?我正在使用需要客户端证书的协议,因此我想生成一次并将其存储在钥匙串中以备将来使用.
我目前正在使用安全框架通过SecKeyGeneratePair生成密钥对,但有没有办法在X.509证书中打包生成的公钥,并使用私钥添加它以创建新的SecIdentity?我想应该有一个办法,因为安全框架应该是在iOS和Mac和钥匙串访问相同的Mac上可以生成自签名的证书.
OpenSSL是一个选项,但如果可能的话,我宁愿使用内置的安全框架.谢谢.