我有一个NSMutable数组,我存储了一些初始数字。我想要做的是能够查看数字,在某些情况下,删除该项目并将其替换为两个。
我的插入/替换代码似乎在索引>时起作用但是,当我尝试insertObject AtIndex:0时,它不会在0处插入任何内容,而是在数组的末尾放置一个空对象。
要显示插入问题,我可以创建一个空的iOS应用程序。
我在ViewController上创建NSMutableArray作为属性:
@property (strong) NSMutableArray *testArray;
然后在实施中:
self.testArray = [[NSMutableArray alloc] init];
[self.testArray addObject: [NSNumber numberWithInteger:1]];
[self.testArray addObject: [NSNumber numberWithInteger:2]];
[self.testArray insertObject:[NSNumber numberWithInteger:3] atIndex:0];
如果我在插入后放置一个断点,调试器会显示: [0] =(id)0x07123180(int)1 [1] =(id)0x07614210(int)2 [2] =(id)0x00000000
我期待在地点0看到(int)3。
如果我设置atIndex:1,我得到这个: [0] =(id)0x07123180(int)1 [1] =(id)0x07131fb0(int)3 [2] =(id)0x07614210(int)2
哪个是正确的。
为什么index = 0不起作用?
答案 0 :(得分:3)
适合我:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSMutableArray *testArray = [[NSMutableArray alloc] init];
[testArray addObject: [NSNumber numberWithInteger:1]];
[testArray addObject: [NSNumber numberWithInteger:2]];
[testArray insertObject:[NSNumber numberWithInteger:3] atIndex:0];
for (NSNumber *num in testArray)
NSLog(@"%@", num);
}
return 0;
}
2013-09-15 09:51:18.266 ArrayTest[890:303] 3
2013-09-15 09:51:18.269 ArrayTest[890:303] 1
2013-09-15 09:51:18.269 ArrayTest[890:303] 2
Program ended with exit code: 0
如果我打破for
语句并使用lldb:
(lldb) po testArray
<__NSArrayM 0x100109120>(
3,
1,
2
)
(这是在Mavericks DP 7下使用Xcode 5 DP 6)。
答案 1 :(得分:0)
为我工作
testArray = [[NSMutableArray alloc]init];
[testArray addObject:[NSNumber numberWithInt:1]];
[testArray addObject:[NSNumber numberWithInt:2]];
[testArray insertObject:[NSNumber numberWithInt:0] atIndex:0];
NSLog(@"%@",testArray);
日志
2013-09-15 10:53:39.048 JsonExample [79141:a0b]( 0, 1, 2 )
我也复制了你的示例代码,它在Xcode 4中运行良好