Objective c 构建错误:架构i386的未定义符号?

Objective c 构建错误:架构i386的未定义符号?,objective-c,xcode4,Objective C,Xcode4,我在使用带有故事板的XCode4的iPad应用程序上遇到此构建错误: 架构i386的未定义符号:“\u OBJC\u CLASS\u$\ u SQLite”, 引用自:EnterDataViewController.o中的objc类ref 我在应用程序中找到了我所知道的所有地方,做了一次清理和重新构建,但都无济于事。我不明白错误在说什么 发生了什么,我该如何解决 更新:以下是EnterDataVewController.m中的相关代码 //++++++++++++++++++++++++++++

我在使用带有故事板的XCode4的iPad应用程序上遇到此构建错误:

架构i386的未定义符号:“\u OBJC\u CLASS\u$\ u SQLite”, 引用自:EnterDataViewController.o中的objc类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;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//--设置第一响应者
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-(BOOL)textField应返回:(UITextField*)textField{
//有关站点数据。。。
if(textField==txtSiteID){
[txtSTA成为第一响应者];
返回true;
}
如果(textField==txtSTA){
[txtElev成为第一响应者];
返回true;
}
如果(textField==txtElev){
[txtSiteDesc成为第一响应者];
返回true;
}
如果(txtSiteDesc.isFirstResponder){
SQLite*db=[[SQLite alloc]init];
[db saveSiteData:(UITextField*)txtSiteID sta:(UITextField*)txtSTA desc:(UITextField*)txtSiteDesc elev:(UITextField*)txtElev];
[txtSiteDesc辞职第一响应者];
返回true;
}
//阅读
if(textField==txtSTA1){
[txtBS成为第一响应者];
返回true;
}
if(textField==txtBS){
[txtFS成为第一响应者];
返回true;
}
if(textField==txtFS){
[txtDesc成为第一响应者];
返回true;
}
//if(textField.isFirstResponder){
如果(textField==txtDesc){
SQLite*db=[[SQLite alloc]init];
[db saveReadings:txtSiteID sta:txtSTA1 bs:txtBS fs:txtFS desc:txtDesc];
[txtDesc辞职第一响应者];
返回true;
}
返回YES;
}
////--这是txtDesc的吗
//if(txtDesc.isFirstResponder){
//[txtDesc辞职第一响应者];
//    }
//
NSString*数据库路径;
NSString*docsDir;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//--保存站点数据
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-(BOOL)保存站点数据{
//验证所有字段
if(txtSiteID.text.length==0 | | txtSiteDesc.text.length==0){
[自我提醒:@“缺少站点ID和/或说明”和数据:@“需要的字段”];
返回否;
}
if(txtSTA.text.length==0 | | txtElev.text.length==0){
[自我提醒:@“缺少初始STA和/或高程”和数据:@“所需字段”];
返回否;
}

//txtSiteDesc.text=txtSiteDesc.text.re是否SQLite是您自己的独立类…如果是,请导入它…如果不是,请尝试在中导入CoreData framework

我发现了问题…有两个(2)EnterDataVewController.m的实例位于同一项目的不同目录中。我不知道这会导致问题的原因,但当我删除第二个实例时,它构建时没有任何问题(正常情况除外)


谢谢大家的建议。我非常感谢您的时间。

是的,他只需要导入该类的标题。是的,它在一个单独的类中,是的,标题已经导入。您是否链接到libsqlite并将其添加到您的项目中?好的,最后一次尝试:阅读并查看问题/解决方案是否可以应用到您的案例中。