Objective c 构建错误:架构i386的未定义符号?
我在使用带有故事板的XCode4的iPad应用程序上遇到此构建错误: 架构i386的未定义符号:“\u OBJC\u CLASS\u$\ u SQLite”, 引用自:EnterDataViewController.o中的objc类ref 我在应用程序中找到了我所知道的所有地方,做了一次清理和重新构建,但都无济于事。我不明白错误在说什么 发生了什么,我该如何解决 更新:以下是EnterDataVewController.m中的相关代码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中的相关代码 //++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//-- 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并将其添加到您的项目中?好的,最后一次尝试:阅读并查看问题/解决方案是否可以应用到您的案例中。