从另一个类调用的方法不会返回它在iOS(MVC)中应该的值

时间:2014-07-08 06:22:02

标签: ios objective-c method-call

我在我的项目中实现了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的任何回报。

1 个答案:

答案 0 :(得分:-1)

答案应该是被问到的。我向人们询问了方法调用,但没有得到一个答案。好吧,我的代码中的错误是方法调用,正如我已经提到的那样。以下是以正确方式执行的代码

mydataList= [dbHandler displayAllResumes]; // mydataList is an NSMutableArray.
numberOfRows = [mydataList count];
[tvMine reloadData];

现在一切都很完美。谢谢你的帮助:/