0

我的程序包含三个文本字段,我将数据插入到 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);

    }

我总是在 arr 中得到长度为 4 和空值。谁能告诉我为什么会这样?我知道代码中一定有一些错误。

4

7 回答 7

1
int length= sizeof(cont);

int length= [cont count]; 改为使用

sizeof(*) 运算符返回指向 NSMutableArray 的指针的大小。

[cont count];

返回数组中元素的数量。

您在 arr 中获得 Null 是因为您将字符串提取[cont objectAtIndex:i]到 NSArrayNSArray *arr

利用NSString *arr = [cont objectAtIndex:i];

于 2012-08-27T08:10:17.567 回答
1

利用

int length=[cont count];
       //array  count 

不是

int 长度= sizeof(续);

并参考该链接

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];
于 2012-08-27T08:23:49.887 回答
0
[cont addObject:phone.text];

您正在添加一个NSString

NSArray *arr = [cont objectAtIndex:i];

你正试图提取一个NSArray

获取数组大小的一个好习惯是使用它的count属性,而不是sizeof.

于 2012-08-27T07:54:45.263 回答
0

试试这个,因为你打印一个数组而不是 index:: 的值

for(int i=0;i<strlen;i++)
{
    NSLog(@"%@", [cont objectAtIndex:i]);
}
于 2012-08-27T07:55:42.000 回答
0

你应该使用[cont count]而不是sizeof(cont)

而且...你分配+初始化你的NSMutableArray了吗?

cont = [[NSMutableArray alloc] init];

这条线是错误的:

NSArray *arr = [cont objectAtIndex:i];

它应该是

NSString *arr = [cont objectAtIndex:i];
于 2012-08-27T07:55:53.237 回答
0

不知道您的错误在哪里,但是要在objective-c中遍历un数组,您应该使用forin循环。

for (NSString* value in cont) {
    NSString *u = [NSString stringWithFormat:@"%d",i];
    NSLog(u);
}
于 2012-08-27T07:57:38.850 回答
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]会给你正确的结果。祝你好运。

于 2012-08-27T08:02:43.977 回答