我的代码中有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];
答案 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。