iOS日志显示NSArray对象是__NSDictionaryM

时间:2013-02-21 04:00:46

标签: ios objective-c nsarray nsdictionary

我正在尝试使用NSArray来存储数据,但是当我记录它的类时(因为它给了我错误),它返回__NSDictionaryM。我添加任何信息的唯一时间是我这​​样做

NSArray *a = [[NSArray alloc]initWithObjects:aa, nil];

对象aa是一个字符串。什么会把数组变成字典?

好的,我使用委托将这个数组传递给另一个类:

for (CXMLElement *resultElement in [[p objectAtIndex:0] elementsForName:@"TrackDetail"]) {
NSString *aa = resultElement.stringValue;
NSArray *a = [[NSArray alloc]initWithObjects:aa, nil];
dispatch_async(dispatch_get_main_queue(), ^(void) {
[self.delegate XMLAvailable:a done:(a.count > 0)];
   });

然后我在其他课程

中这样做
- (void)XMLAvailable:(NSArray *)array done:(BOOL)done{
NSMutableArray *indexPaths = [NSMutableArray arrayWithCapacity:[array count]];
for(int i = [self.imageInfos count]; i < [self.imageInfos count] + [array count]; ++i) {
    NSIndexPath * indexPath = [NSIndexPath indexPathForRow:i inSection:0];
    [indexPaths addObject:indexPath];
}
NSLog(@"%@", array.class);
self.imageInfos = array;
NSLog(@"%@", self.imageInfos.class);
[self.tv insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationRight];

}

但出于某种原因,在上述方法中,array.class会记录__NSDictionaryM

2 个答案:

答案 0 :(得分:0)

尝试在启用僵尸的情况下运行。如果你的数组被意外释放并且在同一地址分配了一个字典,你会得到这样的症状。

答案 1 :(得分:0)

好的,事实证明我只是需要重置我的应用程序上的内容,因为在恢复我的手机后(它冻结了并且不会重新启动)一切正在再次运行并且它们被记录为NSArrays