Objective c 计数NSMutableArray时崩溃

Objective c 计数NSMutableArray时崩溃,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,我有一个包含多个同名键的NSDictionary。结构如下: Dictionary { "Text" => "Blah", "Text" => "Blah 2", "Text" => "Blah 3" } 因此,有三个键具有相同的名称文本。我使用以下方法将文本值放入NSMutableArray: 但是,当我尝试获取数组中的项数时,它会崩溃,并出现以下错误: -[__NSCFString count]: unrecognized selector s

我有一个包含多个同名键的NSDictionary。结构如下:

Dictionary {

    "Text" => "Blah",
    "Text" => "Blah 2",
    "Text" => "Blah 3"

}
因此,有三个键具有相同的名称文本。我使用以下方法将文本值放入NSMutableArray:

但是,当我尝试获取数组中的项数时,它会崩溃,并出现以下错误:

-[__NSCFString count]: unrecognized selector sent to instance 0x856c110
知道为什么会这样吗?我能够输出NSMutableArray的值并查看它们,但不能计算它们

以下是XML文件:

<tickets>
 <text>Blah</text>
 <text>Blah 2</text>
 <text>Blah 3</text>
</tickets>

您正在将NSString添加为对象,而不是NSArray

NSDictionary *notes = [NSDictionray dictionaryWithObjectsAndKeys:[NSMutableArray arrayWithObjetcs:@"Blah",@"Blah 2", @"Blah3"],@"Text",nil];

NSMutableArray *notesA = [notes objectForKey:@"Text"];
NSLog(@"%i", [notesA count]);
由于我们使用的是NSMutableArray,因此这也是有效的:

NSDictionary *notes = [NSDictionray dictionaryWithObjectsAndKeys:[NSMutableArray array],@"Text",nil];

NSMutableArray *notesA = [notes objectForKey:@"Text"];
[notesA addObject:@"Blah"];
[notesA addObject:@"Blah 2"];
[notesA addObject:@"Blah 3"];
NSLog(@"%i", [notesA count]);
顺便说一句:

这不是有效的NSDictionary结构,因为键必须是唯一的

你想要的是:

Dictionary {
    "Text" => ["Blah", "Blah 2","Blah 3"]    
}
如果为同一个键设置多个对象,则较旧的对象将替换为较新的对象

当解析器解析tickets标记时,它应该创建一个数组,用于添加单个文本


notes对象不是字典。它是一个包含3个字典的数组。每个都有一个键文本和一些空值。

您将NSStrings添加为对象,而不是NSArray

NSDictionary *notes = [NSDictionray dictionaryWithObjectsAndKeys:[NSMutableArray arrayWithObjetcs:@"Blah",@"Blah 2", @"Blah3"],@"Text",nil];

NSMutableArray *notesA = [notes objectForKey:@"Text"];
NSLog(@"%i", [notesA count]);
由于我们使用的是NSMutableArray,因此这也是有效的:

NSDictionary *notes = [NSDictionray dictionaryWithObjectsAndKeys:[NSMutableArray array],@"Text",nil];

NSMutableArray *notesA = [notes objectForKey:@"Text"];
[notesA addObject:@"Blah"];
[notesA addObject:@"Blah 2"];
[notesA addObject:@"Blah 3"];
NSLog(@"%i", [notesA count]);
顺便说一句:

这不是有效的NSDictionary结构,因为键必须是唯一的

你想要的是:

Dictionary {
    "Text" => ["Blah", "Blah 2","Blah 3"]    
}
如果为同一个键设置多个对象,则较旧的对象将替换为较新的对象

当解析器解析tickets标记时,它应该创建一个数组,用于添加单个文本


notes对象不是字典。它是一个包含3个字典的数组。每个都有一个关键文本和一些无聊的值。

您建议我如何修复它?首先,您应该告诉我们,您是如何创建字典的,正如您所看到的,我正在编写一个答案。谢谢,但我从正在解析的XML文件中获取NSDictionary。XML文件有多个同名的标记。我将在问题中添加一个示例。当我使用objectForKey时,它崩溃了。我在问题中添加了notes字典。所有的东西都在那里,正如我所说的,我可以使用我以前拥有的东西将所有的对象放入数组中,但它不起作用。请参阅我的编辑。您必须在解析器中处理,票据可以有n个文本标记。您建议我如何修复它?首先,您应该告诉我们,您是如何创建词典的,正如您所看到的,我正在处理一个答案。谢谢,但我从正在解析的XML文件中获取NSDictionary。XML文件有多个同名的标记。我将在问题中添加一个示例。当我使用objectForKey时,它崩溃了。我在问题中添加了notes字典。所有的东西都在那里,正如我所说的,我可以使用我以前拥有的东西将所有的对象放入数组中,但它不起作用。请参阅我的编辑。您必须在解析器中处理,票证可以有n个文本标记。
(
        {
        text = "Blah";
    },
        {
        text = "Blah 1";
    },
        {
        text = "Blah 2";
    }
)