0

我敢肯定这是一个愚蠢的问题,但不幸的是,我和很多人一样是菜鸟(好吧,现在可能更少了,哈哈......)。

无论如何...

我有一个现有项目,其中包含通过我自己的类(MyListTableViewController)填充的 UITableView。此类当前子类化了一个对象,该对象实质上设置了 NSFetchedResultsController。

考虑到这一事实,我读过的示例和文档总是表明需要子类化 QuickDialogController 才能访问 QuickDialog 功能,因为它基本上继承了 UIViewController 的核心。

问题是我不知道如何允许将 QuickDialogController 和 NSFetchedResultsController 类一起用于同一个 UITableView/Instance...

NSFetchedResultsController 正在被子类化,因为它充当 UITableView 的委托,还因为它监视所有 UITableView 事件等……我敢肯定大多数人都很清楚……问题是我可以看到QuickDialogController 也想基本上充当 UIView 的委托(我们的 UITableView 已经是子类)

所以,这让我觉得它要爆炸了,因为我试图弄清楚如何让这两个对象在同一个集合中很好地一起玩......

由于我的应用程序与核心数据紧密耦合,因此我需要此功能,但我想要 QuickDialog 的强大功能和美感。

那么 - 有没有一种方法可以将 QuickDialogController 子类化,然后将 NSFetchedResultsController 用作它的一种委托,反之亦然?

再次,对不起,如果这是一个愚蠢/菜鸟的问题......仍在学习但想要做对......

我用于 UITableViewController 的示例(当前)子类布局...

MyListTableViewController.h

#import <UIKit/UIKit.h>
#import "CoreDataTableViewController.h"

@interface MyListTableViewController : CoreDataTableViewController

CoreDataTableViewController.h

#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>

@interface CoreDataTableViewController : UITableViewController <NSFetchedResultsControllerDelegate>

@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic) BOOL suspendAutomaticTrackingOfChangesInManagedObjectContext;

-(void)performFetch;
@end

也许这里的另一个问题是:是否可以利用 QuickDialog 操作而不必继承 QuickDialogController。如果是这样 - 这样做有什么影响,(最重要的是)有一个小例子吗?我会只创建两个之一的分配实例吗?

对于我的问题可能暴露的任何无知,我提前道歉......

4

1 回答 1

1

你试图做的事情是不可能的。ObjC 不允许多重继承,这是您正在尝试做的。即使这样做了,您仍然会遇到核心数据 dataSource/delegate 和 QuickDialog datasource/delegate 同时工作的问题。

您需要决定一种或另一种方式:1 - 从 QuickDialog 控制器继承,然后添加逻辑以从 CoreData 获取数据并自己加载到 Root 元素中(并且不要使用 CoreDataTableViewController)或.. 2 - 从 CoreDataTableViewController 继承,并手动创建 QuickDialogTableView 及其类的数据源/委托。

关于#2,恕我直言,QD 不是为这种用途而创建的。使用选项 1 会更好,并将 CoreData 数据的加载移动到外部类,然后您可以将其加载到 Root 元素中。但是,如果您有数百/数千行,我不会为此使用 QD。

于 2012-10-13T17:39:00.107 回答