【问题标题】:Error Message: Incompatible pointer to integer conversion sending 'NSArray *__strong' to parameter of type 'NSUInteger'错误消息:指向整数转换的不兼容指针将“NSArray *__strong”发送到“NSUInteger”类型的参数
【发布时间】:2014-04-02 23:27:02
【问题描述】:

为什么我会收到此问题错误?

指向整数转换的不兼容指针将“NSArray *__strong”发送到“NSUInteger”类型的参数

#import "FSConverter.h"
#import "FSVenue.h"

@implementation FSConverter


- (NSArray *)convertToObjects:(NSArray *)venues {

     NSMutableArray *objects = [NSMutableArray arrayWithCapacity:venues];
        for (NSDictionary *v  in venues) {
        FSVenue *ann = [[FSVenue alloc]init];
        ann.name = v[@"name"];
        ann.venueId = v[@"id"];


        ann.location.address = v[@"location"][@"address"];
        ann.location.distance = v[@"location"][@"distance"];

        [ann.location setCoordinate:CLLocationCoordinate2DMake([v[@"location"][@"lat"] doubleValue],
                                                  [v[@"location"][@"lng"] doubleValue])];
        [objects addObject:ann];
     }

     return objects;
}

@end

错误在这一行:

    NSMutableArray *objects = [NSMutableArray arrayWithCapacity:venues];

【问题讨论】:

    标签: ios pointers nsarray nsuinteger


    【解决方案1】:

    这是因为[NSMutableArray arrayWithCapacity:] 需要一个整数而不是数组作为参数。

    假设您要创建一个可变数组,其初始容量与传入的数组相同,那么您的意思可能是:

    NSMutableArray *objects = [NSMutableArray arrayWithCapacity:venues.count];
    

    或者简单地说:

    NSMutableArray *objects = [NSMutableArray new];
    

    (忘记初始容量,因为您使用的是[objects addObject:])。

    【讨论】:

    • 太棒了!效果很好
    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多