13

好吧,一个新手类型的问题。

我想将 Core Data 与 Tab 和 Navigation 控制器一起使用。

在 XCode 中,如果我创建一个基于导航的应用程序,我可以选择 Core Data。而如果我创建一个标签栏应用程序,我没有选择。

我知道标签栏显示视图控制器,所以它有点道理。但是,鉴于默认情况下它将基本核心数据代码粘贴在应用程序委托中,我不明白为什么不提供此功能。

目前我正在创建这两个项目并在它们之间进行剪切和粘贴。

XCode 中的这个遗漏对你来说是不是很奇怪?这是某种疏忽吗?

谢谢,马特

4

4 回答 4

12

我遇到了同样的问题,最终创建了一个 tabBar 应用程序并稍后添加核心数据内容。

为此,我已经:

  1. 将 coredata 框架添加到我的项目中
  2. 将#import <CoreData/CoreData.h> 添加到 myproject_Prefix.pch
  3. 添加声明以委托标头和 getter 实现,就像由支持核心数据的模板创建的一样
  4. 创建模型文件 - 将文件添加到资源组(或您想要放置模型内容的任何位置)并创建数据模型文件。

这应该让您达到与核心数据支持模板相同的点。

对于您的特定情况(带有标签栏的核心数据),Apple 有一个很好的示例应用程序:

http://developer.apple.com/iphone/library/samplecode/iPhoneCoreDataRecipes/index.html

这显示了他们如何将上下文传递到 xib 文件中定义的相关视图控制器,这让我有一段时间感到困惑。

希望这可以帮助。

干杯,彼得

于 2009-12-14T05:36:38.140 回答
7

您可以自己添加它,这很简单:

要修改标签栏模板设置,您必须打开以下文件

对于 XCode 4.2:

/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/Application/Tabbed Application.xctemplate/TemplateInfo.plist

要添加核心数据选项,您必须将属性“ com.apple.dt.unit.coreDataCocoaTouchApplication”添加到 Ancestors 键:

添加属性后,它应该如下所示:

<key>Ancestors</key>

<array>
<string>com.apple.dt.unit.storyboardApplication</string>
<string>com.apple.dt.unit.coreDataCocoaTouchApplication</string>
</array>

对于以前的 XCode 版本

/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/Application/Tab Bar Application.xctemplate/TemplateInfo.plist

要添加核心数据选项,您必须将属性“ com.apple.dt.unit.coreDataCocoaTouchApplication”添加到 Ancestors 键:

添加属性后,它应该如下所示:

<key>Ancestors</key>

<array>
<string>com.apple.dt.unit.cocoaTouchFamiliedApplication</string>
<string>com.apple.dt.unit.coreDataCocoaTouchApplication</string>
</array>

重启 Xcode!

现在一切都应该正常了:!!当您在 Xcode 中创建新的选项卡式项目时,您可以看到 Core Data 选项。

于 2012-01-12T09:44:53.610 回答
6

模板被设计得更“纯粹”,模板的任何组合都留给开发人员练习。

他们可以做一个 CoreData + Tab 和 Nav Controller 模板,但公平地说,他们必须做所有其他可能“合理”的组合。

自己组合它们并不难,开发中心的示例应用程序显示了工作应用程序中的一些组合。

于 2009-09-02T04:26:35.507 回答
2

必须这样做,我认为最简单的方法是创建一个“基于窗口的应用程序”,然后在 AppDelegate 中声明一个 tabBarController,如下所示:

AppDelegate.h

@interface CommUnityAppDelegate : NSObject <UIApplicationDelegate> {
UITabBarController *tabBarController; // add this
UIWindow *window;
}

// and this
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;

在您的 MainWindow.xib 中插入一个 TabBarController 并将其与您的 AppDelegates tabBarController 连接。

之后通过添加以下行使其可见

AppDelegate.m

- (void)applicationDidFinishLaunching:(UIApplication *)application {
  [window addSubview:tabBarController.view]; // add this
  [window makeKeyAndVisible];
}

这为您提供了基本设置,您可以从那里轻松地使用界面构建器添加导航控制器

于 2009-09-02T09:01:47.900 回答