Objective c 计数NSMutableArray时崩溃
我有一个包含多个同名键的NSDictionary。结构如下: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
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";
}
)