LaTeX怎么实现的嵌套关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LaTeX怎么实现的嵌套关系相关的知识,希望对你有一定的参考价值。

参考技术A eX 原生的数据结构,除了编号的几种寄存器(盒子、toks、字体等等……)之外,就只有宏。

寄存器以编号访问,效果是全局的,eTeX 之后每种寄存器也有几万个,包装一下当数组用弄个栈什么的都行,再复杂就不行了。

一般使用还是只有宏。注意到 TeX 的 \csname 技术,在定义宏时,宏的名字也可以是变量,所以这所谓宏就是 hash 表。

像 Lua 等很多常见的脚本语言一样,TeX 只用 hash 表,来构造所有需要的数据结构。

用于关系的嵌套 NSManagedObjectContext 和 NSFetchedResultsController

【中文标题】用于关系的嵌套 NSManagedObjectContext 和 NSFetchedResultsController【英文标题】:Nested NSManagedObjectContext's and NSFetchedResultsController for relationships 【发布时间】:2014-03-21 13:23:05 【问题描述】:

尝试使用 MagicalRecord 为我的 CoreData 实体实现添加/保存控制器,并使用按钮保存和取消。

- (void)addProduct

    NSManagedObjectContext *context = [NSManagedObjectContext MR_context];

    [context MR_setWorkingName:@"PRODUCT_ADD_MOC"];

    ProductBaseEntity *entity = [ProductBaseEntity MR_createInContext:context];
    [self presentProductSaveControllerWithEntity:entity andContext:context];


- (void)editProduct:(ProductBaseEntity *)entity

    [self presentProductSaveControllerWithEntity:entity andContext:nil];


- (void)presentProductSaveControllerWithEntity:(ProductBaseEntity *)entity
                                    andContext:(NSManagedObjectContext *)parentContext

    if (!parentContext) 
        parentContext = [NSManagedObjectContext MR_contextForCurrentThread];
    

    NSManagedObjectContext *context = [NSManagedObjectContext MR_contextWithParent:parentContext];
    [context MR_setWorkingName:@"PRODUCT_SAVE_MOC"];

    ProductBaseEntity *contextEntity = (ProductBaseEntity *)[context objectWithID:entity.objectID];

    ProductSaveController *controller = [[ProductSaveController alloc] initWithEntity:contextEntity];

    controller.managedObjectContext = context;

    controller.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Cancel"
                                                                                   style:UIBarButtonItemStylePlain
                                                                                  target:controller
                                                                                  action:@selector(cancel)];

    controller.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Save"
                                                                                    style:UIBarButtonItemStylePlain
                                                                                   target:controller
                                                                                   action:@selector(done)];

    [controller setDoneHandler:^(ProductSaveController *saveController) 
        if (context.hasChanges) 
            [context MR_saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) 
                [self dismissViewControllerAnimated:YES completion:nil];
            ];
         else 
            [self dismissViewControllerAnimated:YES completion:nil];
        
    ];

    [controller setCancelHandler:^(ProductSaveController *saveController) 
        if (context.hasChanges) 
            [OHAlertView showAlertWithTitle:@"Really exit?"
                                    message:@"Exit and discard changes?"
                               cancelButton:@"Cancel"
                                   okButton:@"Exit"
                             onButtonTapped:^(OHAlertView *alert, NSInteger buttonIndex) 
                                 if (buttonIndex == 1) 
                                     [self dismissViewControllerAnimated:YES completion:nil];
                                 
                             ];
         else 
            [self dismissViewControllerAnimated:YES completion:nil];
        
    ];

    [self presentViewController:[[UINavigationController alloc] initWithRootViewController:controller] animated:YES completion:nil];

问题的第一部分是:这个实现看起来不错吗?我为保存控制器创建单独的上下文,然后我可以决定:我应该将更改保存在持久存储中(保存按钮)还是应该在不修改持久存储的情况下丢弃更改(取消按钮)。对于 addProduct,我再创建一个上下文,因为如果我调用 context.hasChanges,它无论如何都会给我YES,因为对象已插入到此上下文中。

顺便说一句,我的这部分代码工作得很好。

ProductSaveController 中,我有一个打开SomeController 的按钮,其中包含与ProductBaseEntity 相关的实体(1:M)列表,称为ProductEntity,使用NSFetchedResultsController

_fetchedResultsController = [ProductEntity MR_fetchAllSortedBy:@"position"
                                                     ascending:YES
                                                 withPredicate:predicate
                                                       groupBy:nil
                                                      delegate:self
                                                     inContext:self.managedObjectContext];

其中self.managedObjetContext 是来自presentProductSaveControllerWithEntity 方法的上下文。问题是我的控制器没有反映这个控制器的变化。例如我这样做:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

    if (editingStyle == UITableViewCellEditingStyleDelete) 
        ProductEntity *entity = [_fetchedResultsController objectAtIndexPath:indexPath];
        [entity MR_deleteInContext:_fetchedResultsController.managedObjectContext];
    

而我一无所有! tableView 中的这一行没有隐藏!但是,如果我单击后退按钮并再次打开此控制器,我会看到更改!如果我从 self.managedObjectContext 移动到 mainQueue 上下文,我的 fetchedResultsController 将按预期工作。 NSFetchedResultsController 是否应该与私有队列上下文一起使用??

【问题讨论】:

【参考方案1】:

您正在删除实体,但您似乎没有响应删除并更新您的视图。您通常可以通过在视图控制器上实现 NSFetchedResultsControllerDelegate 来做到这一点

【讨论】:

NSFetchedResultsController 工作,只要我使用 MR_defaultContext。似乎 NSFRC 在私有队列上下文方面存在问题。

以上是关于LaTeX怎么实现的嵌套关系的主要内容,如果未能解决你的问题,请参考以下文章

Latex中,下标里嵌套下标怎么输入

latex 表格里能嵌套公式吗

iview 自定义验证表单多层嵌套如何实现

RDLC 怎么嵌套多级子报表

Java嵌套list赋值

html中的表单中怎么嵌套表格