NSMutableArray没有填充

时间:2015-02-19 07:17:18

标签: ios objective-c arrays insert nsmutablearray

我有一个简单的NSMutableArray,我试图存储一些对象。但是在NSLog中,数组的内容总是为空...我只是不明白为什么。这是我的代码:

在我的标题文件中:

NSMutableArray *dataFiles;

在viewDidLoad中:

dataFiles = [[NSMutableArray alloc] init];

稍后在我的代码中尝试将一个字符串添加到我的NSMutableArray:

[dataFiles insertObject:url atIndex:0]; // 'url' is an an NSURL.

我做错了什么?这总是我使用NSMutableArray的方式,为什么它们一下子都不起作用?

更新

我确实在将“url”(NSURL)添加到数组之前对其进行了NSLog,并且它根本不为空。这是输出:

THE URL: file:///var/mobile/Containers/Data/Application/E991FAFC-80DB-437B-B214-96720B1AA7AF/Documents/19Feb15_072308am.aif

更新2

我刚刚尝试了@Dheeraj Singh解决方案而且它无效:

        if ([dataFiles count] == 0) {
            [dataFiles addObject:url];
        }

        else {
            [dataFiles insertObject:url atIndex:0];
        }

        NSLog(@"data in: %@", dataFiles);

谢谢你的时间,Dan。

3 个答案:

答案 0 :(得分:1)

不确定有什么问题,但是下面(你的)代码对我来说很好。

NSMutableArray * arr = [[NSMutableArray alloc]init];
NSString *murl = @"file:///var/mobile/Containers/Data/Application/E991FAFC-80DB-437B-B214-96720B1AA7AF/Documents/19Feb15_072308am.aif";
NSURL *url = [NSURL URLWithString:murl];
[arr insertObject:url atIndex:0];
NSLog(@"Array is %@",arr);

输出

Array is (
    "file:///var/mobile/Containers/Data/Application/E991FAFC-80DB-437B-B214-96720B1AA7AF/Documents/19Feb15_072308am.aif"
)

我强烈感受到你正在使用NSArray来对抗NSMutableArray。请确认相同。

您是否可以发布实际代码,以便我们可以告诉您发生了什么?

答案 1 :(得分:0)

好好玩了一下后,我发现了什么是“错误的”,或者至少是什么阻止了我的代码工作。这是因为在我在viewDidLoad方法中初始化NSMutableArray之前。一旦我将NSMutableArray初始化代码移动到我想将数据写入其中的方法,它就开始工作了。谁知道为什么?这是我现在的代码:

        // Initialise the audio arrays.
        // Originally this line was in the viewDidLoad.
        dataFiles = [[NSMutableArray alloc] init];

        if ([dataFiles count] == 0) {
            [dataFiles addObject:url];
        }

        else {
            [dataFiles insertObject:url atIndex:0];
        }

答案 2 :(得分:-1)

您可以按以下方式执行:

NSMutableArray * arr = [[NSMutableArray alloc]init];
NSString *url = @"www.test.com";
[arr addObject:url];
NSLog(@"Count of Array is %i",[arr count]);

*** if you want to add multiple items then you can do by following way
for (int i =0; i < 5; i++) {
    [arr addObject:@"Hello"];

}
NSLog(@"Count of array is %i",[arr count]);