在NSMutableArray中获取null值

时间:2012-08-27 07:52:00

标签: iphone ios5 sqlite nsmutablearray

我的程序包含三个文本字段,我将数据插入到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。谁能告诉我为什么会这样?我知道代码中肯定会有一些错误。

7 个答案:

答案 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);

并参考链接

Size of NSArray

<强>示例

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]会为您提供正确的结果。 祝你好运。