【问题标题】:objective c No visible @interface for 'NSArray<NSString *>' declares the selector 'insertObject:atIndex:'目标 c 'NSArray<NSString *>' 没有可见的@interface 声明选择器'insertObject:atIndex:'
【发布时间】:2017-12-11 10:42:44
【问题描述】:

我想在数组self.datesWithEvent 中添加对象date

@property (strong, nonatomic) NSArray<NSString *> *datesWithEvent;

[self.datesWithEvent addObject:date];

【问题讨论】:

    标签: ios objective-c nsmutablearray nsarray


    【解决方案1】:

    您只能在可变对象中添加/删除元素

    @property (strong, nonatomic) NSMutableArray<NSString *> *datesWithEvent;
    

    但是仅仅声明属性是可变的是不够的,你必须用它来初始化它

    [[NSMutableArray alloc] init];
    

    或者,如果您为该属性分配另一个(不可变)数组,则必须调用 mutableCopy

    datesWithEvent = [someArray mutableCopy];
    

    【讨论】:

    • -[__NSSingleObjectArrayI addObject:]:无法识别的选择器发送到实例
    【解决方案2】:

    只有类的可变对象/实例允许修改其内部信息/元素。

    请阅读Object Mutability & NSMutableArray,Apple 提供的文件。它将帮助您理解为什么这里需要可变类对象。

    您应该/必须使用NSMutableArray 数组将对象添加/插入到数组中。

    @property (strong, nonatomic) NSMutableArray<NSString *> *datesWithEvent;
    

    NSMutableArray - addObject
    在数组末尾插入给定对象。

    声明

    - (void)addObject:(ObjectType)anObject;
    


    您的查询的解决方案:
    注意:你的数组是NSString类型的元素,所以你的date对象必须是NSString
    (试试这个,让我知道你遇到了什么问题。同时分享你的完整代码,以及关于date对象的信息。)

    @property (strong, nonatomic) NSMutableArray<NSString *> *datesWithEvent;
    
    datesWithEvent = [[NSMutableArray alloc] init];
    NSString *date = @"11-Dec-17";
    [self.datesWithEvent addObject:date];
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多