0

私はこれを初期化しますNSMutableDictionary

define TAREFA      @"TAREFA"  
define DATA_ITEM        @"DATA"   
define HORA_ITEM        @"HORAS"  
define ID          @"ID"  
define STATE       @"NA"  
define APROVED     @"APROVED"  
define REJECTED    @"REJECTED" 

    itensArray = [[NSMutableArray alloc] init];

    for (int i=0; i< [listagens size]; i++)
    {   
        NSMutableDictionary *tmpDictionary = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
                                        [[listagens item:i] WI_ID], ID,
                                        [[listagens item:i] WI_TEXT], TAREFA,
                                        [[listagens item:i] WI_CD], DATA_ITEM,                                            
                                        [[listagens item:i] WI_CT], HORA_ITEM,                                                                                     
                                        STATE, STATE,
                                        nil];

        [itensArray addObject:tmpDictionary];           
    }

後で、私は次のことを行います:

    for (int i=0; i<[itensArray count]; i++) 
    {
        if ([[[itensArray objectAtIndex:i] objectForKey:ID] isEqualToString:cell.idLabel.text]) {
            [[itensArray objectAtIndex:i] setString:APROVED forKey:STATE];
            break;
        }
    }

配列を初期化し、後で NSMutableDictionary の文字列を変更します。値を設定すると、次のランタイム エラーが発生します。

'NSInvalidArgumentException'、理由: '-[__NSCFDictionary setString:forKey:]: 認識されないセレクターがインスタンス 0x7b7d170 に送信されました'

値を正しく変更していないようです。構文エラーですか?それはどのように行われますか?

4

2 に答える 2

2

メソッドの名前のスペルを間違えた可能性があります。

// WRONG
[[itensArray objectAtIndex:i] setString:APROVED forKey:STATE];

// GOOD
[[itensArray objectAtIndex:i] setValue:APROVED forKey:STATE];
于 2012-08-17T16:05:27.467 に答える
1

'NSInvalidArgumentException'、理由: '-[__NSCFDictionary setString:forKey:]: 認識されないセレクターがインスタンス 0x7b7d170 に送信されました'

NSMutableDictionary には setString:forKey: メソッドがありません。

setObject:forKey を試してください:

[[itensArray objectAtIndex:i] setObject:APROVED forKey:STATE]; 
于 2012-08-17T16:03:20.763 に答える