0

我的代码中有一个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];
4

2 回答 2

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);
}
于 2013-07-18T16:30:11.517 回答
0

它给你一个垃圾值,因为你试图将一个对象转换为最有可能的原语。

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

n = [[array3 lastObject] integerValue];

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

于 2013-07-18T16:36:40.650 回答