当load表包含来自sqlite3的数据时出现异常

时间:2012-04-17 13:07:10

标签: iphone objective-c ios exception

我正在开发iPhone应用程序,我创建了一个视图控制器,其中包含一个按钮和tableViewController,必须显示数据形式sqlite3,我正在使用xcode 3.4 我想在viewController中打开TableViewController的按钮,当我尝试打开那个没有按钮的表时我会去故事板并将原始文件放在TableViewController上并正常加载sqlite的数据 但是当我把raw放在viewController上并将按钮连接到TableViewController并建立连接模式然后运行..当我按下按钮时,它给出了以下异常: NSInvalidArgumentException', reason: '-[NSIndexPath isEqualToString:]: unrecognized selector sent to instance ...

,异常是指(cellForRowAtIndexPath

中的一行

这是我的代码:

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

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}

Books *temp= (Books *)[self.books objectAtIndex:indexPath.row];


// [cell setText:temp.bo_name];
[cell setText:[NSString stringWithFormat:@"%d - %@ - %d - %d - %d - %d - %@ - %f - %f - %@ - %f - %d - %@ - %d",temp.bo_id, temp.bo_name, temp.bo_au_id, temp.bo_pub_id, temp.bo_num_pages, temp.bo_publish_year, temp.bo_about, temp.bo_price, temp.bo_currency, temp.bo_cover_img, temp.bo_recomended, temp.bo_sec_id, temp.bo_path, temp.bo_sort]];

return cell;

}

修改以添加我的答案评论中指定的实例变量的类型 - JeremyP。

int bo_id; 
NSString *bo_name; 
int bo_au_id; 
int bo_pub_id; 
int bo_num_pages; 
int bo_publish_year; 
NSString *bo_about; 
double bo_price; 
double bo_currency; 
NSString *bo_cover_img; 
double bo_recomended; 
int bo_sec_id; 
NSString *bo_path; 
int bo_sort; 

2 个答案:

答案 0 :(得分:1)

setText已弃用。而不是[cell setText:[NSString stringWithFormat:@"%d...,请尝试

cell.textLabel.text =[NSString stringWithFormat:@"%d...

错误可能在%d - %@ - %d - %d - %d - %d - %@ - %f - %f - %@ - %f - %d - %@ - %d长度的某处导致参数不匹配(NSInvalidArgumentException)。仔细浏览列表以找出错误。如果不了解各个元素的数据类型,很难说清楚。

答案 1 :(得分:0)

不可能肯定地说出问题是什么,但几乎可以肯定的是,stringWithFormat:中的参数与其格式说明符之间存在不匹配。

检查所有与%d相对应的内容实际上是整数,而不是长整数或短整数。检查指定为%@的内容是否真的是对象指针。此外,如果您在此处使用的任何课程中覆盖了-description,请确保您没有犯错。

-isEqualToString:发送到NSIndexSet会导致实际错误,因此您可能会偶然在某处将NSIndexSet视为字符串。