因未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [__ NSArrayM objectForKey:]:无法识别的选择器发送到实例

时间:2017-11-09 06:12:05

标签: ios objective-c arrays json nsarray

我试图像这样改变以下数组。 实际回应:

 errFlag = 0;
    errMsg = "Got Slot successfully.";
    errNum = 128;
    slots =     (
                {
            date = "";
            slot =             (
                                {
                    booked = 1;
                    end = 1510822800;
                    "end_dt" = "09:00:00";
                    id = 5a02a0372279511b1c968a10;
                    locId = "";
                    radius = 1;
                    "slot_price" = 20;
                    start = 1510815600;
                    "start_dt" = "07:00:00";
                }
            );
        }
    );

我希望它的反应......

{
 "start_dt" = "07:00:00";
                    }
{
 "start_dt" = "11:00:00";
                    }
{
 "start_dt" = "14:00:00";
                    }

我在接下来的路上尝试了这个,但我最终得到了一个偏见。

if (requestType == RequestTypeGetAllMetSlots)
        {

            // altering the response into an array
            NSDictionary *slotResultsDict = response[@"slots"];
            NSLog(@"Priniting timeSlotResponseDict%@",slotResultsDict);
            timeSlotResponseArray = [[slotResultsDict objectForKey:@"slot"] valueForKey:@"start_dt"];
            NSLog(@"Priniting timeSlotResponseArray%@",timeSlotResponseArray);


        }

以下是我得到的Exeception ..请帮帮我..

 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKey:]: unrecognized selector sent to instance

1 个答案:

答案 0 :(得分:1)

崩溃,因为response是一个数组而不是字典。 slot也是一个数组而不是字典。

试试这个。

NSArray *slots = response[@"slots"]
NSDictionary *slotResultsDict = [slots firstObject];
NSLog(@"Priniting timeSlotResponseDict%@",slotResultsDict);

NSDictionary *subSlot = [[slotResultsDict objectForKey:@"slot"] firstObject];
timeSlotResponseArray = [subSlot valueForKey:@"start_dt"];
NSLog(@"Priniting timeSlotResponseArray%@",timeSlotResponseArray);

或者在一行中。

NSString *startDate = [[[[response[@"slots"] firstObject] objectForKey:@"slot"] firstObject] objectForKey:@"start_dt"];
相关问题