我有一个采用 NSDictionary 的方法:
-(id)initWithJSONDictionary:(NSDictionary *)dataDictionary{
self = [super init];
NSLog(@"********************************* %@ ",dataDictionary);
for(NSString * key in dataDictionary){
if([key isEqualToString:@"filters"]){
NSDictionary * filtersSubDict = [dataDictionary objectForKey:key];
for(NSString *sfKey in filtersSubDict){
NSLog(@"new filter: %@", sfKey );
NSDictionary *filterObject = [filtersSubDict objectForKey:sfKey];
// this line is throwing some kind of thread exception
}
}
}
return self;
}
关于为什么带有注释的行抛出异常的任何线索:**首先抛出调用堆栈:
(0x1d04012 0x1141e7e 0x1d8f4bd 0x1cf3bbc 0x1cf394e 0x1052b 0x137fe 0x259b3 0x4a6853f 0x4a7a014 0x4a6a7d5 0x1caaaf5 0x1ca9f44 0x1ca9e1b 0x1c5e7e3 0x1c5e668 0x85ffc 0x27fd 0x2725)
libc++abi.dylib: terminate called throwing an exception
(lldb)
显示整个 NSDictionary 的第一个 NSLog 显示了这一点:
{
errorCode = 0;
filters = (
{
id = 1001;
name = "Base Lenses";
sequence = 1;
},
{
id = 1002;
name = "Standard Anti-Reflective";
sequence = 2;
},
{
id = 1003;
name = "Premium Anti-Reflective";
sequence = 3;
},
{
id = 1004;
name = "Enhanced Scratch Resistance";
sequence = 4;
},
{
id = 1005;
name = Sun;
sequence = 5;
},
{
id = 1006;
name = Tint;
sequence = 6;
},
{
id = 1007;
name = "Clear To Dark";
sequence = 7;
}
);
lenses = {
Glass = (
{
fsv = 1;
inStore = 1;
lom = 0;
price = 465;
style = "Glass Std AR";
styleFilters = (
1002
);
type = "Single Vision";
visionCorrection = singleVision;
},
{
fsv = 1;
inStore = 0;
lom = 1;
price = 395;
style = "Prem Plastic Std AR";
styleFilters = (
1002
);
type = "SV HD";
visionCorrection = singleVision;
}
);
"Plastic/Hi-index" = (
{
fsv = 1;
inStore = 1;
lom = 0;
price = 395;
style = "Prem Plastic Std AR";
styleFilters = (
1002,
1006
);
type = "SV HD";
visionCorrection = singleVision;
},
{
fsv = 1;
inStore = 0;
lom = 1;
price = 465;
style = "Glass Std AR";
styleFilters = (
1002,
1006
);
type = "SV HD";
visionCorrection = singleVision;
}
);
Polycarbonate = (
{
fsv = 1;
inStore = 1;
lom = 0;
price = 395;
style = "FeatherWates Classic";
styleFilters = (
1001
);
type = "SV Wrap";
visionCorrection = singleVision;
},
{
fsv = 1;
inStore = 0;
lom = 1;
price = 495;
style = "FeatherWates Classic";
styleFilters = (
1001
);
type = "SV Wrap";
visionCorrection = singleVision;
}
);
};
materials = (
Polycarbonate,
"Plastic/Hi-index",
Glass
);
}
我正在尝试为“过滤器”中的每个节点创建一个新对象,以获取 id、名称和序列值