为什么我在objectForKey方法中收到警告?

时间:2015-05-26 14:05:47

标签: objective-c nsdictionary type-conversion

我需要在

中执行方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

我有一个NSDictionary,我希望从中获取ID(长)并将其发送到我的方法:

    long sect = (long)section;
    [objectp.methodA countRowsInSection:[tableSections objectForKey:[NSString stringWithFormat:@"%ld", sect]]]

我收到警告:

Incompatible pointer to integer conversion sending 'id' to parameter of type 'long'

为什么?

我尝试将NSInteger转换为long,然后转换为NSString,但警告仍然存在。

备注: countRowsInSectionlong

我将数据存储在NSDictionary NSString

[tableSections setValue:[NSString stringWithFormat:@"%ld", newCategoryID]
   forKey:[NSString stringWithFormat:@"%ld", counter]];

2 个答案:

答案 0 :(得分:0)

  

我有一个NSDictionary,我希望从中获取ID(长)并将其发送到我的方法:

不,您不希望从字典中获取类型为long的ID,因为long是C类型,无法存储在字典中。可能它是NSStringNSNumber的实例。然后,您将其作为-countRowsInSection:的参数,可能需要NSIntegerlong,因此为C类型。

答案 1 :(得分:0)

你的countRowsInSection:似乎期望它的论点是long。但是你要发送一个对象(可能是NSNumber)。如果是这种情况,以下内容将起作用:

[objectp.methodA countRowsInSection:[[tableSections objectForKey:[NSString stringWithFormat:@"%ld", sect] longValue]]];