【问题标题】:bundling Core Data to tableviewcontroller (himself in a navigation controller(himself in a tabbarcontroller))将核心数据绑定到 tableviewcontroller(他自己在导航控制器中(他自己在 tabbarcontroller 中))
【发布时间】:2012-05-31 00:06:52
【问题描述】:

我是在 iPhone 上开发的新手,我的项目遇到了很多问题。

该项目,基于空应用程序:一个标签栏应用程序(item1,item2)。 item1 是一个简单的视图控制器(ProfilViewController),是导航控制器的一部分。来自 item1 的按钮推送一个 tableviewcontroller (MainMantraViewController)。

除此之外,我的 CoreData 有一个实体:Mantra,由 3 个属性组成:短语、主题、partage。我尝试在启动时填充它以测试 coredata 和 tableviewcontroller 之间的捆绑。

这是我的 appdelegate.m,在 didfinishlaunching 下:

ProfilViewController *rootView =(ProfilViewController *)self.window.rootViewController;
rootView.managedObjectContext=self.managedObjectContext;

//donnée test
Mantra * newMantra=(Mantra *)[NSEntityDescription insertNewObjectForEntityForName:@"Mantra" inManagedObjectContext:self.managedObjectContext];
newMantra.phrase =@"ca pu du cul";
newMantra.theme = @"rire";

运行应用程序,我得到以下 *

  • (已编辑)

*:

**2012-05-24 16:26:09.690 Proto v0[1843:fb03] -[UITabBarController setManagedObjectContext:]: unrecognized selector sent to instance 0x6a4a690
2012-05-24 16:26:09.693 Proto v0[1843:fb03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITabBarController setManagedObjectContext:]: unrecognized selector sent to instance 0x6a4a690'**

我完全被困在这一点上,我在任何地方都找不到任何确凿的线索。 感谢您的帮助,并将提供任何有用的片段。

干杯

【问题讨论】:

  • 错误是说程序中的某些东西正试图访问对象的topViewController 属性。该对象是UITabBarController,但该属性仅存在于UINavigationController。你在哪里引用topViewController
  • 这是我在教程中找到的一种方法,但它似乎必须实现,尽管我认为它是课程的一部分。
  • 新错误正在发生,因为您告诉编译器将rootView 视为ProfilViewController,但它不是一个;它是UITabBarController,而不是...根据错误消息。每当您使用演员表时,例如 (ProfilViewController *),您需要 100% 确定您是对的。

标签: ios ios4 ios-simulator xcode4.3


【解决方案1】:

好吧,错误日志很清楚,您在 UITabBarController 的某个地方调用了“topViewController”,但 UITabBarController 没有名为“topViewController”的属性。我想你想使用'selectedViewController'。

【讨论】:

  • 好的,我改用另一种方法,用于与另一种架构一起工作,但精神是一样的:定义一个根视图并从中设置上下文:ProfilViewController *rootView =(ProfilViewController *)self。窗口.rootViewController; rootView.managedObjectContext=self.managedObjectContext;
  • 糟糕,这实际上不是我收到的最新错误消息。我已经更新了与我帖子中的代码相对应的那个。
  • 但这是同一种错误,它告诉您您正在尝试强制转换不属于 UITabBarController 的方法;)我假设您在 ProfilViewController.h 中有 managedObjectContext 属性文件?所以只需使用 _profileViewController.managedObjectContext = self.managedObjectContext.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 2012-03-09
  • 1970-01-01
  • 2011-03-14
  • 2017-10-16
相关资源
最近更新 更多