如何将 NSMutableArray 的内容复制到 iPhone 应用程序中的另一个 NStArray?

Posted

技术标签:

【中文标题】如何将 NSMutableArray 的内容复制到 iPhone 应用程序中的另一个 NStArray?【英文标题】:How to copy the contents of NSMutableArray to another NStArray in iphone app? 【发布时间】:2012-09-24 10:33:13 【问题描述】:

我有两个数组,一个是 NSMutableArray,一个是 NSArray,我想将 NSMutableArray 的内容存储在 NSArray 中,但它对我不起作用,会发送无法识别的选择器异常。

myArray=[[NSArray alloc] initWithArray:appDelegate.surveyAnswersScreenOne];

注意,SurveyAnswerScreenOneNSMutableArray

【问题讨论】:

你确定会因此而出现无法识别的选择器吗?放置一个断点以再次检查崩溃点。 检查 appDelegate 有引用和 NSlog appDelegate.surveyAnswersScreenOne 如果 appDelegate.surveyAnswersScreenOne 有值然后 myArray=[[NSArray alloc] initWithArray:[appDelegate.surveyAnswersScreenOne copy]]; 【参考方案1】:

您可以通过多种方式做到这一点 -

NSArray * myArray = [appDelegate.surveyAnswersScreenOne copy];

NSArray * myArray = [NSArray arrayWithArray:appDelegate.surveyAnswersScreenOne];

NSArray * myArray = [[NSArray alloc]initWithArray:appDelegate.surveyAnswersScreenOne];

但首先你的appDelegate.surveyAnswersScreenOne 里面应该有对象。

【讨论】:

不可能!首先尝试打印您的 appDelegate.surveyAnswersScreenOne 数组...您说 appDelegate.surveyAnswersScreenOne 是 mutableArray。 NSMutableArray*surveyAnswersScreenOne 我在 appDelegate 中这样声明 你如何制作你的 appdelegate 对象?这应该声明为 appDelegate = (Appdelegate *)[[UIApplication sharedApplication]delegate]; 其实 NSMutableArray 是 NSArray 的子类。我相信你可以用它启动一个数组。很确定我有很多次。创建可变的、按摩的内容并传递由可变的不可变。相当普遍的做法。 是的,谢谢,我正在检查 NSMutableArray 中的问题,我认为它是空的【参考方案2】:

你为你的appDelegate创建对象了吗?

appDelegate = (yourDelegateClass *)[[UIApplication sharedApplication]delegate];

如果是,那么其他答案应该有效!

myArray = [NSArray arrayWithArray:appDelegate.surveyAnswersScreenOne];

【讨论】:

【参考方案3】:

从我们在这里看到的情况来看,您的可变数组很可能是 nil。在您的应用程序委托中查看它的创建。如果创建正确,请检查它是否保留。它是一个强有力的参考吗?

@propery(nonatomic, strong) NSMutableArray *surveyAnswersScreenOne;

首先,我会使用方便的方法:

myArray = [NSArray arrayWithArray:appDelegate.surveyAnswersScreenOne];

如果surveyAnswersScreenOne 是一个有效的数组,可变的或其他的,这应该有效。尝试将其打印到控制台以确保。如果surveyAnswersScreenOne 为nil,这将返回空数组,其中alloc initWithArray 将失败。 像这样检查你的可变数组。

NSLog(@"Mutable array is %@", appDelegate.surveyAnswersScreenOne);

【讨论】:

是的,我已经检查过了,但不适合我,我不知道为什么会这样 你把那个 NSLog 放进去了吗?你需要后退一步,确保你的对象都是有效的。我们需要查看更多代码,并且您需要更准确地定位异常发生的位置。在创建数组之前设置一个断点,然后单步执行以准确查看哪个调用失败了。 复制数组时发生异常 您尝试过我的建议了吗?你的 MutableArray 是一个有效的数组吗?您是否尝试过使用方便的方法来代替现有的方法?

以上是关于如何将 NSMutableArray 的内容复制到 iPhone 应用程序中的另一个 NStArray?的主要内容,如果未能解决你的问题,请参考以下文章

如何将唯一对象添加到 nsmutablearray?

如何将 NSMutableArray(包含其他数组)保存到文件

如何将CGContextAddArc(CGContextRef)中的所有点存储到NSMUtableArray

如何将 NSDictionary 数据添加到 NSMutableArray?

如何将 NSMutableArray 保存到 iPhone 的 plist 中

如何将多个 NSIndexPath 添加到 NSMutableArray