我在我的项目中实现了MVC。在模型I中有一个包含下面方法的类DBHandler,它假设返回已保存项目的名称
- (NSMutableArray *) displayAllItems
{
NSString* selectAllResume = [NSString stringWithFormat:@"select * from Items"];
sqlite3_stmt* selectStatement = (sqlite3_stmt *)[self getStatement:selectAllResume];
while(sqlite3_step(selectStatement) == SQLITE_ROW)
{
@try {
ResumeDC *resume = [[ResumeDC alloc] init];
NSString *result_output = @"";
int numberOfCoulmns = 1;
for (int a=0; a<numberOfCoulmns; a++)
{
resume.resumeName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectStatement, a)];
NSString *formatout = [NSString stringWithFormat:@"%@", resume.resumeName];
result_output = [result_output stringByAppendingString: formatout];
}
[dataList addObject:result_output]; // the value in the datalist is empty later on.
}
@catch (NSException *exception) {
NSLog(@"We were unable to find the files.");
}
return dataList;
}
}
在View中,我有一个类SavedItems。在viewDidLoad()中,我试图访问上述方法读取的所有数据,并将其显示在tableview中。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.tvMine.delegate = self;
self.tvMine.dataSource = self;
GET_DBHANDLER
[dbHandler displayAllItems];
mydataList = dbHandler.dataList;
numberOfRows = [mydataList count];
[tvMine reloadData];
}
这就是我如何将它显示在表格中(只是提供它,否则下面的代码是完美的)。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyIdentifier"];
}
if ([mydataList count] > 0) {
cell.textLabel.text = [mydataList objectAtIndex:indexPath.row];
}
return cell;
}
但是当我在类的外面调用它时,我得不到displayAllItems的任何回报。
答案 0 :(得分:-1)
答案应该是被问到的。我向人们询问了方法调用,但没有得到一个答案。好吧,我的代码中的错误是方法调用,正如我已经提到的那样。以下是以正确方式执行的代码
mydataList= [dbHandler displayAllResumes]; // mydataList is an NSMutableArray.
numberOfRows = [mydataList count];
[tvMine reloadData];
现在一切都很完美。谢谢你的帮助:/