0

我目前正在尝试在 NSXMLParser 的帮助下编写一个 XML 解析器。它应该生成一个 NSMutableDictionaries 数组。

将嵌套标签制作成嵌套字典真的让我的大脑很难受。我可能还会注意到我对这门语言非常陌生,这对我来说有点像练习。

我的实际问题是:

假设我有一个名为xmlArray. 这个数组最终应该包含所有元素,包括 xml 文件的子元素——作为嵌套数组和字典的数组。

现在我可能有另一个变量currentArray,它引用了xmlArray.

这可能看起来像这样:

currentArray = [xmlArray objectAtIndex: 3];

现在我可能想引用xmlArrayusing的不同部分currentArray

那么如果我这样做会发生什么:

currentArray = [xmlArray objectAtIndex: 5];

这不等于说:

[xmlArray objectAtIndex: 3] = [xmlArray objectAtIndex: 5];

我是在切换对不同对象的引用 ( [xmlArray objectAtIndex: 5]) 还是在更改最初引用的对象 ( [xmlArray objectAtIndex: 3])?

如何在不更改最初引用的对象的情况下更改对不同对象的引用?

我知道这可能是一个非常nooby的问题,我仍然希望有人可能想要帮助。:) 谢谢!!!:)

4

1 回答 1

2

这不是变量的工作方式。

这是怎么回事?

NSMutableArray* currentArray是一个变量,它将保存一个指向我们正在处理的对象的指针。请参阅下面如何使用它的过程:

这将获取索引 3 处对象的指针地址,并将其存储在当前数组中:

currentArray = [xmlArray objectAtIndex: 3];

这将用另一个指针替换保存的值currentArray(它只是一个指针),这次指向索引 5 处的对象:

currentArray = [xmlArray objectAtIndex: 5];

内部指针的变化对数组本身的内容没有currentArray影响。

这也不会做任何事情,因为它不会重置数组内的任何内容来更改其索引处的指针;它只是从数组中读取,而不是写入它。

[xmlArray objectAtIndex: 3] = [xmlArray objectAtIndex: 5];

至于你的问题...

我是在切换对不同对象的引用([xmlArray objectAtIndex: 5])还是在更改最初引用的对象([xmlArray objectAtIndex: 3])?

您正在切换对对象的引用,而不是更改初始对象。我强烈建议您阅读《Objective-C 简介》以及《C 风格编程简介》,因为变量管理是相当基础的东西。

于 2012-11-07T17:58:18.943 回答