0

私のプログラムには3つのテキストフィールドが含まれており、データをsqliteデータベースに挿入しています。現在、データベースのデータをテーブルビューに表示しようとしています。そのために、データをNSMutableArrayに追加して、それを印刷しようとしました。しかし、配列にnull値が表示されています。なぜnull値を取得しているのかわかりません。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になっています。なぜそうなのか教えてもらえますか?コードにエラーがあるはずです。

4

7 に答える 7

1

使用する

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

代わり

int length = sizeof(cont);

そのリンクを参照してください

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 に答える
1
int length= sizeof(cont);

int length= [cont count]; 代わりに使用 してください

sizeof(*)演算子は、NSMutableArrayへのポインターのサイズを返します。

[cont count];

配列内の要素の数を返します。

[cont objectAtIndex:i]NSArrayに文字列を抽出しているため、arrでNullが発生しますNSArray *arr

使用するNSString *arr = [cont objectAtIndex:i];

于 2012-08-27T08:10:17.567 に答える
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 に答える
0
[cont addObject:phone.text];

追加していますNSString

NSArray *arr = [cont objectAtIndex:i];

そして、あなたは抽出しようとしていますNSArray

また、配列のサイズを取得するための良い習慣はcount、ではなく、そのプロパティを使用することsizeofです。

于 2012-08-27T07:54:45.263 に答える
0

インデックスの値ではなく配列を出力するため、これを試してください::

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 arrayを実行するには、forinループを使用する必要があります。

for (NSString* value in cont) {
    NSString *u = [NSString stringWithFormat:@"%d",i];
    NSLog(u);
}
于 2012-08-27T07:57:38.850 に答える