來源是JSON CouchDB中(相關數據):嵌套的NSDictionary與valueForKeyPath返回支架代替的NSString
{
"_id":"f994892f3fb525d73b3b6b8a59000e1d",
"_rev":"3-c431ee9334e9be038d9c935efcf2f049",
"teiXML":[
{
"teiHeader":[
{
"fileDesc":[
{
"publicationStmt":[
{
"publisher":"University",
"pubPlace":"Someplace",
"idno type=\"callNo\"":"ABC 007",
"date":"2007"
}
],
這是的NSDictionary(簡體):
<CCouchDBDocument: 0x5842c0> (id:f994892f3fb525d73b3b6b8a59000e1d rev:4-3fc1a36de622529cd67416c9e5ae88da {
"_id" = f994892f3fb525d73b3b6b8a59000e1d;
"_rev" = "4-3fc1a36de622529cd67416c9e5ae88da";
teiXML = (
{
teiHeader = (
{
fileDesc = (
{
publicationStmt = (
{
date = 2007;
"idno type=\"callNo\"" = "ABC 007";
publisher = "University";
我想獲得「出版商」的價值,所以我嘗試使用valueForKeyPath:
NSLog(@"%@",[doc valueForKeyPath:@"content.teiXML.teiHeader.fileDesc.publicationStmt.publisher"]);
但代替值「Un大學「我得到這個作爲輸出:
1> 2011-05-26 10:10:02.717 MyApp[12770:707] (
(
(
(
"University"
)
)
)
)
這是相當惱人的。我可以用indexAtObject組合得到值:
NSLog(@"%@",[[[[[doc valueForKeyPath:@"content.teiXML.teiHeader.fileDesc.publicationStmt.publisher"] objectAtIndex:0] objectAtIndex:0] objectAtIndex:0] objectAtIndex:0]);
有什麼東西一定是錯的嗎?還有更多值需要提取,我不想計算需要多少個objectAtIndex重複才能使其工作。
對不起,我將XML轉換爲Jouch for CouchDB,所以NSDictionary是從JSON源構建的,而不是XML。我將把JSON源添加到問題中。 – Patrick 2011-05-26 08:57:18
正如所料,輸出是一個NSArray: '(GDB)PO項 <__ NSArrayI 0x53fcf0>( <__ NSArrayI 0x54d4c0>( <__ NSArrayI 0x55dc10>( <__ NSArrayI 0x554280>( 大學 ) ) ) )'。我真的很好奇爲什麼? – Patrick 2011-05-26 09:56:58
帕特里克,請參閱我的編輯... – sergio 2011-05-26 10:05:34