将 NSDictionary 分配给 NSArray 类型的参数的不兼容指针类型



我正在尝试将字典转换为 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;

最新更新