sqlite 视图控制器中的UITableView

icomxhvb  于 2023-05-29  发布在  SQLite
关注(0)|答案(2)|浏览(185)

这是我的视图控制器,正如你所看到的,下面有一个UITableView。

我将委托和数据源放在.h文件中

@interface CourseFindrViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

我的.m文件是这样的:

@interface CourseFindrViewController ()
{ sqlite3 *_db;}
@property (nonatomic, weak) IBOutlet UILabel *jNameLabel;
@property (weak, nonatomic) IBOutlet UITextView *jDescLabel;
@property (nonatomic, weak) IBOutlet UILabel *jEarningsLabel;
@property (weak, nonatomic) IBOutlet UITableView *cTableLabel;
@end

@implementation CourseFindrViewController
@synthesize jDetails =_jDetails;


-(void)viewWillAppear:(BOOL)animated {

        _jDetails = (Jobs *)self.jDetails;
        [self.jNameLabel setText:_jDetails.jName];
        [self.jDescLabel setText:_jDetails.jDesc];
        [self.jEarningsLabel setText:_jDetails.jEarnings];
    NSLog(@"%d", _jDetails.jID);
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    self.jNameLabel = nil;
    self.jDescLabel = nil;
    self.jEarningsLabel = nil;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(NSArray *)course;
{
    NSString *sqLiteDb = [[NSBundle mainBundle]pathForResource:@"CourseFindr" ofType:@"sqlite"];
    sqlite3_stmt *statement;
    NSMutableArray *retrieve = [[NSMutableArray alloc] init];
        if (sqlite3_open([sqLiteDb UTF8String], &_db) != SQLITE_OK)
        {
                NSString *query= [NSString stringWithFormat:@"SELECT course. * FROM course INNER JOIN jobsCourse ON jobsCourse.courseID = course.cID WHERE jobsCourse.jobID = %d", _jDetails.jID];

            if (sqlite3_prepare_v2(_db, [query UTF8String], -1, &statement, nil) == SQLITE_OK)
            {
                while (sqlite3_step(statement) == SQLITE_ROW)
                {
                    int _cID = sqlite3_column_int(statement, 0);
                    char *cNameChars = (char *) sqlite3_column_text(statement,1);
                    char *cDescChars = (char *) sqlite3_column_text(statement, 2);
                    char *cSchoolChars = (char *) sqlite3_column_text (statement, 3);
                    char *cProgramChars = (char *) sqlite3_column_text(statement, 4);
                    NSString *_cName =cNameChars?[[NSString alloc]initWithUTF8String:cNameChars]:@"";
                    NSString *_cDesc = cDescChars?[[NSString alloc]initWithUTF8String:cDescChars]:@"";
                    NSString *_cSchool = cSchoolChars?[[NSString alloc]initWithUTF8String:cSchoolChars]:@"";
                    NSString *_cProgram = cProgramChars?[[NSString alloc]initWithUTF8String:cProgramChars]:@"";
                    Course *courses = [[Course alloc]
                               initWithCID:_cID
                               cName:_cName
                               cDesc:_cDesc
                               cSchool:_cSchool
                               cProgram:_cProgram];
                    [retrieve addObject:courses];
                }
            sqlite3_finalize(statement);
            }

        }
    return retrieve;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *title1 = _jDetails.jName;
    self.navigationItem.title = title1;
}
- (void)dealloc {

}

代码到此为止。我添加了一个断点。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.course count];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"courseCell"];
    NSLog(@"Here.");
    Course *courses = [self.course objectAtIndex:indexPath.row];
    cell.textLabel.text =courses.cName;
    cell.detailTextLabel.text =courses.cSchool;
    return cell;
}

它仍然没有将数据传递给表。table没有出现。

q5iwbnjs

q5iwbnjs1#

您必须在表视图和数据源及委托之间添加连接。要做这个简单的控件,从表视图拖到视图控制器,选择数据源,然后做同样的事情,但这次选择委托。

mxg2im7a

mxg2im7a2#

必须在xib中连接数据源和委托。

相关问题