0

iPhone データベース アプリで作業していたところ、"expected getter method not found" というメッセージが表示されました。メッセージが表示される理由がわかりません。あらゆる種類のトラブルシューティングを試しました。次のコード行にあります。

NSString *inserStmt = [NSString stringWithFormat:@"INSERT INTO PERSONS(NAME,AGE)  values   ('%s' '%d')",[self.Namefield.text UTF8String],[self.ageField.text intValue]];

コードは次のとおりです。

#import "ViewController.h"

@interface ViewController ()
{
    NSMutableArray *arrayOfPerson;
    sqlite3 *personDB;
    NSString *dbPathString;
}
@end

@implementation ViewController

- (void)viewDidLoad 
{
    [super viewDidLoad];
    arrayOfPerson = [[NSMutableArray alloc]init];
    [[self myTableView]setDelegate:self];
    [[self myTableView]setDataSource:self];
    [self createOrOpenDB]; 
}

-(void)createOrOpenDB
{
    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,      NSUserDomainMask, YES);
    NSString *docPath = [path objectAtIndex:0];

    dbPathString = [docPath stringByAppendingPathComponent:@"persons.db"];

    char *error;

    NSFileManager *fileManager = [NSFileManager defaultManager];
    if (![fileManager fileExistsAtPath:dbPathString]) {
        const char *dbPath = [dbPathString UTF8String];

        if (sqlite3_open(dbPath, &personDB)==SQLITE_OK) {
            const char *sql_stmt = "CREATE TABLE IF NOT EXISTS PERSONS (ID INTEGER PRIMARY   KEY AUTOINCREMENT, NAME TEXT, AGE INTEGER)";
            sqlite3_exec(personDB, sql_stmt, NULL, NULL, &error);
            sqlite3_close(personDB);
        }
    }
}


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

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

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath  *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (!cell) {
        cell = [[UITableViewCell alloc ]initWithStyle:UITableViewCellStyleSubtitle  reuseIdentifier:CellIdentifier];

    }

    Person *aPerson = [arrayOfPerson objectAtIndex:indexPath.row];
    cell.textLabel.text = aPerson.name;
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%d", aPerson.age];

    return cell;
}



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

- (IBAction)AddPersonButton:(id)sender {

    if (sqlite3_open([dbPathString UTF8String], &personDB)==SQLITE_OK) {
        NSString *inserStmt = [NSString stringWithFormat:@"INSERT INTO PERSONS(NAME,AGE)  values ('%s' '%d')",[self.Namefield.text UTF8String],[self.ageField.text intValue]];
    }
}

- (IBAction)DisplayPersonButton:(id)sender {
}

- (IBAction)deletePersonButton:(id)sender {
}
@end

誰か助けてくれませんか?ありがとうございました!

4

1 に答える 1

0

このエラーは、getter メソッドが必要であることを示しています。つまり、プロパティの getter を作成する必要があります。プロパティを合成する場合、ios が getter メソッドを内部的に実装します。そのため、プロパティを合成する必要があります。

@implementation ViewController
@Synthesize NameField,ageField;//property synthesized
// remaining code
@end
于 2013-02-09T04:41:58.130 に答える