以前在iOS6中,我的聊天消息视图控制器在IB中通过精心构造的自动布局约束正确显示和动画.这是在Xcode 5中删除约束的当前视图层次结构:

在升级到XCode 5和iOS7之后,我发现我需要清除所有旧约束以便考虑默认的半透明状态栏,否则我的工具栏将属于状态栏.尽管使用UIRectEdgeNone调用setEdgesForExtendedLayout:发生了这种情况.
我现在正试图在viewDidLoad中以编程方式创建所有约束:
// self.view.translatesAutoresizingMaskIntoConstraints = NO; // errors either way
NSArray *viewHorizConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_toolbar]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_toolbar)];
[self.view addConstraints:viewHorizConstraints];
viewHorizConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_viewContainer]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_viewContainer)];
[self.view addConstraints:viewHorizConstraints];
NSArray *viewVertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(20)-[_toolbar(44)]-[_viewContainer]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_toolbar, _viewContainer)];
[self.view addConstraints:viewVertConstraints];
NSArray *tableContainerVertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_tableView(<=460@999)][_viewInputContainer(44)]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_tableView, _viewInputContainer)];
[_viewTableContainer addConstraints:tableContainerVertConstraints];
NSArray *containerVertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_viewTableContainer][_viewOptions]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_viewTableContainer, _viewOptions)];
[_viewContainer addConstraints:containerVertConstraints];
// _constraintContainerVertSpace = [NSLayoutConstraint constraintWithItem:_viewTableContainer attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:_viewContainer attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; // same as below …Run Code Online (Sandbox Code Playgroud) 使用RestKit v0.20.0-rc1,我成功地创建了CoreData映射并从捆绑的JSON文件中导入对象,并使数据保持多个构建.但是,当我创建自己的实体并保存它时,如果我使用[RKManagedObjectStore defaultStore] .mainQueueManagedObjectContext,则实体会在下次构建时立即消失,但如果我使用[RKManagedObjectStore defaultStore] .persistentStoreManagedObjectContext,则会保持正确.
UserAccount *userAccount = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:managedObjectContext];
userAccount.userID = @(userID);
[userAccount addContactMethodsObject:phone];
NSError *error = nil;
if(![managedObjectContext save:&error])
NSLog(@"%@", error);
Run Code Online (Sandbox Code Playgroud)
使用managedObjectContext在上面的代码中保存没有错误,并且来自同一上下文的任何提取都会正确地返回实体.但是在后续构建中,如果我使用mainQueueManagedObjectContext,则提取将始终返回nil,即使上面的代码在主线程上运行.
有什么我想念的吗?