NSMutableArray不返回值并分配给变量

时间:2013-07-18 16:25:01

标签: ios nsmutablearray

我的代码中有NSMutableArray,我想访问该数组的最后一个元素,并将该元素保存在整数n变量中。但是n在我NSLog时没有给我正确的值,它给了我一个垃圾值。

 for(int i=0;i<[array3 count];i++)
    {
        if(i==([array3 count]-1))
        {
            n = [array3 objectAtIndex:i];
        }    
    }

    NSLog(@"The id is=%d",n);

    NSError *error;
    NSString *aDocumentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
        NSString *dataPath = [aDocumentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%d",n]];
      [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error];

2 个答案:

答案 0 :(得分:3)

数组包含对象,而不是像int这样的标量类型。试试这个:

id n = [array3 lastObject];          // prettier than objectAtIndex:[array count]-1
NSLog(@"the last object is %@", n);   // %@ is an object format descriptor

也许数组包含整数有意义的NSNumbers?然后,

NSNumber *n = [array3 lastObject];
NSLog(@"the last object is %@ or view it this way %d", n, [n intValue]);

您还可以使用更新的语法访问数组:

id n = array3[array3.count-1];

您还可以更快速,更简洁地迭代数组:

for (id object in array3) {
    NSLog(@"%@", object);
}

答案 1 :(得分:0)

它会给你一个垃圾值,因为你试图将一个对象强制转换为一个原语。

此外,for循环是不必要的。

n = [[array3 lastObject] integerValue];

应该是你需要的一切。如果那仍然是垃圾,那是因为数组中的对象是垃圾(或者不能转换为整数)。那时,看看你在哪里设置array3。