次のように宣言されているマルチレベル配列から辞書を抽出するのが困難です。
NSArray *menuItems;
次のようになります。
Table = (
{
MENUDESC = "HOME ";
MENUID = 1072;
NAVIGATETO = "content.aspx?item=1072&pid=0";
NAVIGATETO2 = "default.aspx?item=1072&pid=0";
PARENTMENUID = "<null>";
PROTECTED = "<null>";
parentmenuid2 = "<null>";
},
{
MENUDESC = "PRODUCTS & SERVICES";
MENUID = 1073;
NAVIGATETO = "#";
NAVIGATETO2 = "default.aspx?item=1073&pid=0";
PARENTMENUID = "<null>";
PROTECTED = "<null>";
parentmenuid2 = "<null>";
},
{
MENUDESC = "ABOUT US";
MENUID = 1074;
NAVIGATETO = "content.aspx?item=1074&pid=0";
NAVIGATETO2 = "default.aspx?item=1074&pid=0";
PARENTMENUID = "<null>";
PROTECTED = "<null>";
parentmenuid2 = "<null>";
},
{
MENUDESC = "WHAT SETS US APART";
MENUID = 1075;
NAVIGATETO = "content.aspx?item=1075&pid=0";
NAVIGATETO2 = "default.aspx?item=1075&pid=0";
PARENTMENUID = "<null>";
PROTECTED = "<null>";
parentmenuid2 = "<null>";
},
{
MENUDESC = "CASE STUDIES";
MENUID = 1126;
NAVIGATETO = "content.aspx?item=1126&pid=0";
NAVIGATETO2 = "default.aspx?item=1126&pid=0";
PARENTMENUID = "<null>";
PROTECTED = "<null>";
parentmenuid2 = "<null>";
},
{
MENUDESC = "REQUEST PROPOSAL";
MENUID = 1076;
NAVIGATETO = "content.aspx?item=1076&pid=0";
NAVIGATETO2 = "default.aspx?item=1076&pid=0";
PARENTMENUID = "<null>";
PROTECTED = "<null>";
parentmenuid2 = "<null>";
},
{
MENUDESC = CONTACT;
MENUID = 1077;
NAVIGATETO = "contactus.aspx?item=1077&pid=0";
NAVIGATETO2 = "contactus.aspx?item=1077&pid=0";
PARENTMENUID = "<null>";
PROTECTED = "<null>";
parentmenuid2 = "<null>";
}
);
}
次のような JSON から作成されます。
{
"Table": [
{
"MENUID": 1072.0,
"MENUDESC": "HOME ",
"PARENTMENUID": null,
"NAVIGATETO": "content.aspx?item=1072&pid=0",
"NAVIGATETO2": "default.aspx?item=1072&pid=0",
"PROTECTED": null,
"parentmenuid2": null
},
{
"MENUID": 1073.0,
"MENUDESC": "PRODUCTS & SERVICES",
"PARENTMENUID": null,
"NAVIGATETO": "#",
"NAVIGATETO2": "default.aspx?item=1073&pid=0",
"PROTECTED": null,
"parentmenuid2": null
},
{
"MENUID": 1074.0,
"MENUDESC": "ABOUT US",
"PARENTMENUID": null,
"NAVIGATETO": "content.aspx?item=1074&pid=0",
"NAVIGATETO2": "default.aspx?item=1074&pid=0",
"PROTECTED": null,
"parentmenuid2": null
},
{
"MENUID": 1075.0,
"MENUDESC": "WHAT SETS US APART",
"PARENTMENUID": null,
"NAVIGATETO": "content.aspx?item=1075&pid=0",
"NAVIGATETO2": "default.aspx?item=1075&pid=0",
"PROTECTED": null,
"parentmenuid2": null
},
]
}
これを使用して辞書を抽出するサンプルコードを使用しています。
NSDictionary *items = [menuItems objectAtIndex:indexPath.row];
しかし、それは機能していません。「無効なセレクターが送信されました」というエラーが表示されます。配列内のデータにアクセスするためにあらゆる種類の方法を試しました。しかし、私が見つけたすべての調査と回答は役に立ちません。
次のように NSStrings を作成する必要があります。
NSString *text = [[menuItems objectForKey:@"Table"] objectForKey:@"MENUDESC"];
NSString *name = [[menuItems objectForKey:@"Table"] objectForKey:@"MENUID"];