-2

テーブルに列を追加したい。この列は、SAP システムであるバックエンド データベースに既に追加されています。また、SAP システムに最初に接続したときに、その値が抽出に取り込まれていることも確認できます。ログインに成功すると、素材抽出関数モジュールが実行され、xcode でアプリケーションに追加する必要がある列「価格」が返されます。

私を助けてください。

エラー: 「タイプ NSException のキャッチされない例外で終了しています」 キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。

    if(!found){
            NSMutableDictionary *mDic = [[NSMutableDictionary alloc] init];
            [mDic setObject:[dic valueForKey:@"itemId"] forKey:@"itemId"];
            [mDic setObject:[dic valueForKey:@"itemR"] forKey:@"itemR"];
            [mDic setObject:[dic valueForKey:@"itemQty"] forKey:@"itemQty"];
            [mDic setObject:[dic valueForKey:@"itemDesc"] forKey:@"itemDesc"];
            [mDic setObject:[dic valueForKey:@"itemPack"] forKey:@"itemPack"];
            [mDic setObject:[dic valueForKey:@"itemUOM"] forKey:@"itemUOM"];
            [mDic setObject:[dic valueForKey:@"itemNACS"] forKey:@"itemNACS"];
            [mDic setObject:[dic valueForKey:@"itemPrice"] forKey:@"itemPrice"];  // This is where the error is occuring.
            int qty = [[dic valueForKey:@"itemQty"] intValue];
           // float price = [[dic valueForKey:@"itemPrice"] floatValue];
           // price = price * qty;
           // [mDic setObject:[NSString stringWithFormat:@"%.2f", price]  forKey:@"itemPrice"];

            mQty = qty;

            [mDic setObject:[dic valueForKey:@"itemLastSold"] forKey:@"itemLastSold"];
            [items addObject:mDic];
            [mDic release];
        }

Its actually not being retrieved from dic dictionary variable.

This is the code for adding that itemPrice to the table
 int mQty;
    //DELETE AND RE-ADD
    for (int i=0; i<[items count]; i++) {
        if([[dic valueForKey:@"itemId"] isEqualToString:[[items objectAtIndex:i] valueForKey:@"itemId"]]){
            NSLog(@"qty %@",[dic valueForKey:@"itemQty"]);
            int qty = [[dic valueForKey:@"itemQty"] intValue];

            qty = qty + [[[items objectAtIndex:i] valueForKey:@"itemQty"] intValue];
            NSDictionary *d =  [items objectAtIndex:i];
            NSLog([d description]);

            [[items objectAtIndex:i] setValue:[NSString stringWithFormat:@"%d", qty] forKey:@"itemQty"];
found = YES;
[items removeObjectAtIndex:i];
 NSMutableDictionary *mDic = [[NSMutableDictionary alloc] init];
            [mDic setObject:[dic valueForKey:@"itemId"] forKey:@"itemId"];
            [mDic setObject:[dic valueForKey:@"itemR"] forKey:@"itemR"];
            [mDic setObject:[NSString stringWithFormat:@"%d", qty] forKey:@"itemQty"];
            [mDic setObject:[dic valueForKey:@"itemDesc"] forKey:@"itemDesc"];
            [mDic setObject:[dic valueForKey:@"itemPack"] forKey:@"itemPack"];
            [mDic setObject:[dic valueForKey:@"itemUOM"] forKey:@"itemUOM"];
            [mDic setObject:[dic valueForKey:@"itemNACS"] forKey:@"itemNACS"];
            [mDic setObject:[dic valueForKey:@"itemPrice"] forKey:@"itemPrice"];  //added price column
 mQty = qty;
            [mDic setObject:[dic valueForKey:@"itemLastSold"] forKey:@"itemLastSold"];
//            [items insertObject:mDic atIndex:0];
            [items addObject:mDic];
            [mDic release];

            break;
}
4

1 に答える 1

0

NSMutableDictionary に nil を入れることはできません。dic がこのキーを持っていない可能性がある場合は、クラッシュを防ぐために次のようなことをする必要があります:

if ([dic valueForKey:@"itemPrice"] != nil) {
    [mDic setObject:[dic valueForKey:@"itemPrice"] forKey:@"itemPrice"];
}

または、dic に itemPrice キーが含まれていない理由を調査する必要があります。

于 2013-10-24T18:02:39.543 に答える