【问题标题】:Using MoC in a Controller, instead of AppDelegate在控制器中使用 MoC,而不是 AppDelegate
【发布时间】:2014-10-08 19:47:37
【问题描述】:

我有一个简单的程序,单击窗口上的按钮会触发 AppDelegate 中的 IBAction 并将新的 managedObject 添加到 Context - 这里没有问题,一切正常。

我遇到的问题是当我创建一个 MainController 来控制窗口时 - 我该如何做同样的事情?我所做的一种解决方案是在 MainController 中实例化 AppDelegate 的实例,将窗口上的按钮链接到 MainController 中的 IBAction,该 IBAction 调用 AppDelegate add 方法。这可行,但不确定这是否是最好的方法。

任何想法或建议将不胜感激。

【问题讨论】:

    标签: objective-c cocoa core-data model-view-controller


    【解决方案1】:

    为什么不将managedObjectContextAppDelegate 传递给您的MainController。 在 AppDelegate 方法中

    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    

    MainController. 中声明IBAction(which adds the object)

    链接button on the window to this IBAction

    这就是我的工作。

    【讨论】:

    • 听起来不错,如何在 MainController 中不创建 AppDelegate 实例的情况下传递 managedObjectContext?
    • 为什么要在 MainController 中创建 AppDelegate 的实例。为什么不在您的 mainController 和 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 中声明一个 managedObjectContext 属性,当您实例化您的主控制器时,使用 App Delegate 的 managedOBjectContext 属性设置属性 managedObjectContext 属性,这反过来会将 managedObjectContext 的引用传递给您的主控制器你可以保留所有添加/删除对象的逻辑。
    • 我创建了一个实例,以便可以访问 MoC - 这是我能想到的唯一方法。
    • @littleDrummerBoy 我顺便编辑了我的评论。我一直这样做,这有助于将所有窗口逻辑保留在主控制器中,而不是在 appdelegate 中,这是一个好方法。
    • 谢谢 - 我今晚会尝试并报告。采纳你的建议。
    【解决方案2】:

    更正您的解决方案:您可以使用简单的代码将 appDelegate 传递给任何控制器,而无需执行任何属性等:

    #import "YOURAppDelegate.h"
    
    YOURAppDelegate *appDelegate = (YOURAppDelegate *)[[UIApplication sharedApplication] delegate];
    [appDelegate yourMethod];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 2016-03-29
      • 2016-02-19
      • 1970-01-01
      相关资源
      最近更新 更多