Có ai đã thực hiện tra cứu trật tự đệ quy của một NSDictionary cấu trúc không xác định không? Tôi muốn lấy bất kỳ NSDictionary và xử lý từng cấp theo thứ tự phân cấp.Theo dõi đệ quy NSDictionary của cấu trúc không xác định
1) Dữ liệu này đến từ JSON được xác thực. Có an toàn khi nói rằng NSDictionary được tạo ra từ một khung công tác như SBJSON (JSON Framework) sẽ chỉ dẫn đến kết hợp các từ điển lồng nhau, mảng và các lá tùy ý?
2) Làm cách nào để có thể thực hiện tra cứu chung bằng cách sử dụng liệt kê nhanh hoạt động cho cả mảng và từ điển? Với mã bên dưới, khi tôi truy cập từ điển trong một mảng, nó sẽ dừng ngang qua. Tuy nhiên, nếu tôi tiếp tục đệ quy trong điều kiện mảng (để kiểm tra các từ điển trong mảng), nó sẽ chuyển tiếp lần lặp tiếp theo của id value = [dict valueForKey:key];
bằng một S23ABAYN -[__NSCFDictionary length]: unrecognized selector sent to instance
. Tôi không biết tại sao điều này lại là một vấn đề, bởi vì tôi đã vượt qua dòng đó với một từ điển cấp cao nhất (nơi mà các từ điển cấp phụ đã được tìm thấy).
-(void)processParsedObject:(id)dict counter:(int)i parent:(NSString *)parent
{
for (id key in dict) {
id value = [dict valueForKey:key];
NSLog(@"%i : %@ : %@ -> %@", i, [value class], parent, key);
if ([value isKindOfClass:[NSDictionary class]])
{
i++;
NSDictionary* newDict = (NSDictionary*)value;
[self processParsedObject:newDict counter:i parent:(NSString*)key];
i--;
}
else if ([value isKindOfClass:[NSArray class]])
{
for (id obj in value) {
NSLog(@"Obj Type: %@", [obj class]);
}
}
}
}
Rất cám ơn
Bạn làm điều này mỗi khi bạn NSLog một NSDictionary. –
Đúng, nhưng điểm chung là nắm bắt và xử lý các đối tượng lồng nhau trong quá trình, không chỉ đăng nhập chúng. –
Bạn chỉ cần học cách sử dụng 'isKindOfClass'. –