我正在尝试将字典转换为 objective-c 中的数组。我在第三行收到此警告。"将 NS 字典分配给 NSarray 类型的参数的不兼容指针类型"。有没有办法将该字典转换为数组而不会收到警告?
// in DataSource.h
@property (nonatomic,strong) NSArray *bars;
// in MasterViewController.m
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];
operation.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSDictionary *JSONDict = (NSDictionary *) responseObject;
_dataSource.recievedJSON = JSONDict;
_dataSource.bars = [NSArray arrayWithArray:JSONDict];
self.title = @"Bars";
[self.tableView reloadData];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// display alert if error downlading data
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];
}];
[operation start];
你是说:
[NSArray arrayWithArray:JSONDict]
但JSONDict
是NSDictionary,而arrayWithArray:
期待NSArray。那你为什么要这样做呢?
你需要考虑如何将这个字典变成一个数组——如果这是你的目标——然后你需要这样做。您需要了解字典的结构,并考虑将其可能转换为哪种"数组"。
您不能将 NSDictionary(键值对)转换为 NSArray,但如果您想获取字典的键和值数组,则可以尝试此操作。
NSDictionary* dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"object1",@"key1",@"object2",@"key2",@"object3",@"key3", nil];
NSArray* arrKeys = dic.allKeys;
NSArray* arrValues = dic.allValues;