数据控制器中的iOS方法是';不要被叫

数据控制器中的iOS方法是';不要被叫,ios,methods,error-handling,Ios,Methods,Error Handling,我试图在data controller对象中调用一个方法来加载应用程序的数据,但由于某些原因,没有调用它。下面是我初始化它的步骤。任何帮助都将不胜感激 视图控制器: 头文件: #import <UIKit/UIKit.h> @class DetailViewController; @class DataController; #import <CoreData/CoreData.h> #import "JointCAD.h" @interface TableView

我试图在data controller对象中调用一个方法来加载应用程序的数据,但由于某些原因,没有调用它。下面是我初始化它的步骤。任何帮助都将不胜感激

视图控制器:

头文件:

#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 <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

“dataController”对象是否由其他类设置我相信这就是为什么你把它作为一个财产?对吧?

如果没有,请删除属性@synthesis of'dataController',尝试简单分配'dataController'对象,然后尝试调用您的方法


希望有帮助。

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

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

- (void)viewDidLoad {

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

}
并且去掉dataController的属性声明,因为您还没有初始化它。如果您希望使用属性声明,只需在调用viewcontroller函数之前分配viewcontroller即可

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

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


我希望这会有帮助

Hmmm我以ray wenderlichs推送通知教程为例,这就是他访问数据模型的方式。我不应该每次想访问它时都分配它。。。。
- (void)viewDidLoad {

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

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

}