0

ストーリーボードで XCode4 を使用する iPad アプリで、次のビルド エラーが発生します。

アーキテクチャ i386 の未定義シンボル: "_OBJC_CLASS_$_SQLite"、参照元: EnterDataViewController.o の objc-class-ref

私はアプリで知っているすべての場所を調べ、クリーンアップと再構築をすべて無駄にしました。エラーが何について話しているのかわかりません。

何が起きていて、どうすれば修正できますか?

更新: EnterDataVewController.m からの関連コードは次のとおりです。

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//--  set First Responder
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- (BOOL) textFieldShouldReturn:(UITextField *)textField  {

    //  for site data...
    if(textField == txtSiteID)  {
        [txtSTA becomeFirstResponder];
        return true;
    }

    if(textField == txtSTA)  {
        [txtElev becomeFirstResponder];
        return true;
    }

    if(textField == txtElev)  {
        [txtSiteDesc becomeFirstResponder];
        return true;
    }

    if(txtSiteDesc.isFirstResponder)  { 
        SQLite *db = [[SQLite alloc] init];
        [db saveSiteData:(UITextField *) txtSiteID sta:(UITextField *) txtSTA desc:(UITextField *) txtSiteDesc elev: (UITextField *) txtElev ];
        [txtSiteDesc resignFirstResponder];
        return true;
    }

    //  for readings
    if(textField == txtSTA1)  {
        [txtBS becomeFirstResponder];
        return true;
    }

    if(textField == txtBS) {
        [txtFS becomeFirstResponder];
        return true;
    }

    if(textField == txtFS)  {
        [txtDesc becomeFirstResponder];
        return true;
    }

    //    if(textField.isFirstResponder) {  
    if(textField == txtDesc) {  
        SQLite *db = [[SQLite alloc] init];
        [db saveReadings:txtSiteID sta:txtSTA1 bs:txtBS fs:txtFS desc:txtDesc];
        [txtDesc resignFirstResponder];
        return true;
    }

    return YES;
}

//    //--  is this for txtDesc 
//    if(txtDesc.isFirstResponder)  {
//        [txtDesc resignFirstResponder];
//    }
//

NSString *databasePath;
NSString *docsDir;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//--  save the site data
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- (BOOL) saveSiteData  {


    //  validate all fields
    if(txtSiteID.text.length == 0 || txtSiteDesc.text.length == 0)  {
        [self Alert:@"Missing Site ID and/or Description" andData:@"Reqired fields"];
        return NO;
    }

    if(txtSTA.text.length == 0 || txtElev.text.length == 0)  {
        [self Alert:@"Missing Initial STA and/or Elevation" andData:@"Reqired fields"];        
        return NO;
    }

    //    txtSiteDesc.text = txtSiteDesc.text.re  <----------  remove single quotes  TODO

    //  update d/b
    SQLite *dbCode = [[SQLite alloc] init];  //  instantiate slSQLite
    [dbCode saveSiteData:txtSiteID sta:txtSTA desc:txtSiteDesc elev:txtElev];  //  save site data

    return YES;
}


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//--  save the readings
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- (void) saveReadings  {

    //  update d/b
    SQLite *dbCode = [[SQLite alloc] init];  //  instantiate slSQLite
    [dbCode saveReadings:txtSiteID sta:txtSTA1 bs:txtBS fs:txtFS desc:txtDesc];

    return;
}
4

2 に答える 2

1

問題が見つかりました...同じプロジェクトの別々のディレクトリに EnterDataVewController.m の 2 つのインスタンスがありました。なぜ問題が発生するのかはわかりませんが、2 番目のインスタンスを削除すると、問題なくビルドされます (通常以外)。

提案をありがとうございました。お時間をいただきありがとうございます。

于 2012-04-14T13:38:10.663 に答える
0

SQLite は独自の個別のクラスですか...その場合はインポートします...そうでない場合は、CoreData フレームワークをインポートしてみてください

于 2012-04-13T15:11:24.493 に答える