我的程序包含三个文本字段,我将数据插入到sqlite数据库中。现在我试图在tableview中显示数据库中的数据。为此我尝试将数据添加到NSMutableArray并尝试打印它。但它在数组中显示空值。我不知道为什么我得到一个空值。 cont是NsMutableArray。
[cont addObject:name.text];
[cont addObject:address.text];
[cont addObject:phone.text];
NSLog(name.text);
NSLog(address.text);
NSLog(phone.text);
int length= sizeof(cont);
NSString *strlen = [NSString stringWithFormat:@"%d", length];
NSLog(strlen);
for(int i=0;i<strlen;i++)
{
NSArray *arr = [cont objectAtIndex:i];
NSString *u = [NSString stringWithFormat:@"%d",i];
NSLog(u);
NSLog(arr);
}
我总是将长度设为4并且在arr中为null。谁能告诉我为什么会这样?我知道代码中肯定会有一些错误。
答案 0 :(得分:1)
int length= sizeof(cont);
使用
int length= [cont count];
代替
sizeof(*)运算符返回指向NSMutableArray的指针的大小。
[cont count];
返回数组中元素的数量。
你在arr中得到Null,因为你正在将字符串[cont objectAtIndex:i]
提取到NSArray中NSArray *arr
使用NSString *arr = [cont objectAtIndex:i];
答案 1 :(得分:1)
使用强>
int length=[cont count];
//array count
int length = sizeof(cont);
并参考链接
<强>示例强>
NSMutableArray * cont=[[NSMutableArray alloc]init];
[cont addObject:@"1"];
[cont addObject:@"ddg"];
[cont addObject:@"ggg"];
for(int i=0;i<[cont count];i++)
{
NSLog(@"Index %d",i);
NSLog(@" Object %@",[cont objectAtIndex:i]);
}
[cont release];
答案 2 :(得分:0)
[cont addObject:phone.text];
您正在添加NSString
NSArray *arr = [cont objectAtIndex:i];
您正在尝试提取NSArray
获取数组大小的一个好方法是使用其count
属性,而不是sizeof
。
答案 3 :(得分:0)
试试这个,因为你打印的数组不是index ::
的值for(int i=0;i<strlen;i++)
{
NSLog(@"%@", [cont objectAtIndex:i]);
}
答案 4 :(得分:0)
您应该使用[cont count]
代替sizeof(cont)
而且......你分配了+ init你的NSMutableArray吗?
cont = [[NSMutableArray alloc] init];
这一行错了:
NSArray *arr = [cont objectAtIndex:i];
应该是
NSString *arr = [cont objectAtIndex:i];
答案 5 :(得分:0)
不知道你的错误在哪里,但要在objective-c中使用un array,你应该使用forin循环。
for (NSString* value in cont) {
NSString *u = [NSString stringWithFormat:@"%d",i];
NSLog(u);
}
答案 6 :(得分:0)
NSString *strlen = [NSString stringWithFormat:@"%d", length];
strlen只是一个NSString,但你试图在线上使用它作为整数:
for(int i=0;i<strlen;i++)
{
...
}
您应该像这样使用它:
for(int i=0;i<[strlen intValue];i++)
{
...
}
[strlen intValue]
会为您提供正确的结果。
祝你好运。