-1

いくつかの項目を含む NSArray があります。NSArray は別のクラスから uitableview にロードされます。詳細ビューから戻って再入力すると (3 回目)、NSArray が空になり、テーブルビューも空になります。何が起こっている?(arcを使っているので漏れではないと思います)

- (void)viewDidLoad {

    myMatch = [[Match alloc] initWithId:1 OpponentId:13];
}


- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *askCellIdent = @"askCell";
    static NSString *answerCellIdent = @"answerCell";


    if (indexPath.row == 0)
    {

        AskCell *cell = [tv dequeueReusableCellWithIdentifier:askCellIdent];
        if (cell==nil) {
            cell = [[AskCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:askCellIdent];
        }

        cell.nameLabel.text = @"Albert asked:";
        cell.questionLabel.text = [NSString stringWithFormat:@"%@", [[myMatch.chat objectAtIndex:indexPath.row] objectAtIndex:1]];
        return cell;
    }
    if (indexPath.row == 1)
    {

        AnswerCell *cell = [tv dequeueReusableCellWithIdentifier:answerCellIdent];
        if (cell==nil) {
            cell = [[AnswerCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:answerCellIdent];
        }

        cell.nameLabel.text = @"Hugh answered:";
        cell.answerLabel.text = [NSString stringWithFormat:@"%@", [[myMatch.chat objectAtIndex:indexPath.row] objectAtIndex:1]];
        return cell;
    }

}

my match クラスの初期化コードは次のとおりです。

- (id) initWithId:(NSInteger)yourId OpponentId:(NSInteger)opId {
    self = [super init];
    if (self != nil) {
        //set your id and opponents id to the match.
        [self setUserId:yourId];
        [self setUserId:opId];

        JSON = @"[{\"opponentId\":\"4\",\"chat\":[[\"1\",\"Does he have a beard?\"],[\"1\",\"No.\"]]}]";

        //initiate the chat array.
        chat = [[NSMutableArray alloc] init ];
        [self loadMatch];


    }
    return self;
}

ここにチャットプロパティ/合成があります

NSMutableArray *chat;

@property (nonatomic, retain) NSMutableArray *chat;

@synthesize chat;

配列の slog も空であるため、何が起こっているのかわかりません!

4

4 に答える 4

0

appDelegateでint変数repeatCountを宣言します

- (void)viewDidLoad
{
    [super viewDidLoad];
    ypurAppDelegate *appDelegate = (yourAppDelegate *)[[UIApplication sharedApplication]   elegate];


          appDelegate.repeatCount++;

       if(appDelegate.repeatCount %3==0)
       {
           [array removeAllObjects];
            [tableview reloaddata];
        }
}
于 2012-05-02T07:00:50.650 に答える
0

ViewDidLoad の代わりに、initWithCoder でオブジェクトを割り当てます。

- (void)viewDidLoad
{
   [super viewDidLoad];
}

-(id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if( self )
    {
       myMatch = [[Match alloc] initWithId:1 OpponentId:13];
    }
return self;
}
于 2012-05-02T06:43:23.617 に答える
0

NSMutableArray1回だけ呼び出されるため、データの入力に問題があると思いますviewDidLoadviewWillAppearメソッドの配列に値を挿入するか、 で一致クラスを開始する必要がありinitWithCoderます。

于 2012-05-02T07:39:41.613 に答える
0

self.chat = [[[NSMutableArray alloc] init ]autorelease]; を使用します。配列を初期化する

于 2012-05-02T06:22:04.097 に答える