0

我试图在我的数据控制器对象中调用一个方法来为我的应用程序加载数据,但由于某种原因它没有被调用。下面是我为初始化它所做的事情。任何帮助将不胜感激。

视图控制器:

头文件:

#import <UIKit/UIKit.h>

@class DetailViewController;
@class DataController;

#import <CoreData/CoreData.h>
#import "JointCAD.h"

@interface TableViewController : UITableViewController {

}

@property (nonatomic, assign) DataController *dataController;

@end

实现文件:

#import "TableViewController.h"
#import "DataController.h"

@implementation TableViewController

@synthesize dataController;

- (void)viewDidLoad {

[dataController refreshData];

}

@end

数据控制器:

头文件:

#import <Foundation/Foundation.h>
#import "JointCAD.h"
#import "JointCADXMLParser.h"
#import "TFHpple.h"

@interface DataController : NSObject {

    TFHpple *xpathParser;
}

- (void)refreshData;

- (void)initXMLParser;

- (void)noCallsMessage;

- (void)noInternetMessage;

@end

实现文件:

#import "DataController.h"

@implementation DataController

XMLParser *xmlParser;

- (void)refreshData {

NSLog("Some Method");

}
4

2 回答 2

0

'dataController' 对象是否由其他类设置?- 我相信这就是您将其设置为属性的原因?正确的?

如果否,则删除属性,@synthesize 'dataController' 并尝试简单分配您的 'dataController' 对象,然后尝试调用您的方法。

希望能帮助到你。

于 2013-01-26T20:37:09.727 回答
0

您要么需要在实际调用其中一个方法之前初始化“DataController”,要么需要通过将“-”更改为“+”来使方法“refreshData”成为一个类。

如果您需要实例回调。您需要像这样重写“viewDidLoad”:

- (void)viewDidLoad {

DataController *dataController = [[DataController alloc] init];
[dataController refreshData];

}

并且去掉 dataController 的属性声明,因为你还没有初始化它。如果您更喜欢属性声明,只需在调用视图控制器之前分配视图控制器。

- (void)viewDidLoad {
dataController = [[DataController alloc] init];
[dataController refreshData];

}

最后要注意的一件事是,我(可能还有 Ray)假设您正在使用情节提要配置。如果您使用的是 xib 配置,则需要添加initWithNibName:到视图控制器的每个初始化中。

我希望这会有所帮助!

于 2013-01-26T21:11:01.287 回答