【问题标题】:How to delete row from tableview in iOS?如何从 iOS 的 tableview 中删除行?
【发布时间】:2017-03-17 21:21:27
【问题描述】:

我拿了三个数组。一个数组用于保存图像数据,其余两个数组用于保存图像名称和日期。

删除行时出现此错误:

NSInternalInconsistencyException',原因:'-[__NSCFArray removeObjectAtIndex:]:变异方法发送到不可变对象'

如何处理?

【问题讨论】:

  • 请用您的相关代码更新您的问题。
  • 所以你需要数组来保存图像数据,图像名称和日期,对吧。好吧,只取一个对象类,三个属性,然后把对象类对象加入数组,然后操作数组,不需要取三个不同的数组。而且您的错误似乎是您被拿走了 NSArray 并从 NSArray 中删除了对象,这是不可变的。取可变数组
  • mutating method sent to immutable object 应该清楚地表明您正在尝试改变 NSArray 而您应该使用 NSMutableArray。
  • 我已经上传了图片,你可以看看图片吗,我正在使用 3 个数组,一个用于图像,第二个用于图像名称,第三个当前日期,我需要删除一个图像,因此每行包含 3 个对象 na如何删除这个?

标签: ios objective-c uitableview


【解决方案1】:

你需要使用 NSMutableArray 而不是 NSArray

【讨论】:

    【解决方案2】:

    实现功能的简单优化方法

    参加NSObject 之类的课程

    #import <Foundation/Foundation.h>
    
    @interface YourClassName : NSObject
    
    @property (nonatomic, strong) NSString *imgName;
    @property (nonatomic, strong) NSData *imgData;
    @property (nonatomic, strong) NSString *imgDate;
    
    @end
    

    然后,将类的对象添加到NSMutableArray,然后根据您的意愿对其进行变异。只从一个数组中删除,而不是从三个不同的数组中删除,这样很混乱,可能会发生冲突。

    或者

    只需使用NSMutableArray 而不是NSArray。如果您已经这样做了,请检查 NSMutableArray 是否包含 NSArray 类型值,这些值不能是不可变的。

    谢谢

    【讨论】:

    • NSMutableArray *imagesArray; NSMutableArray *namesArray; NSMutableArray *datesArray;取 3 个可变数组
    • 为什么?只需获取对象类并将对象添加到单个数组中即可。当数组大小增加时,将来可能会导致内存泄漏问题...
    • 我采用了 3 个可变数组,一个数组具有图像数据,另一个数组图像名称和第三个图像日期,请参见上面的图像 iam 显示。如果我不想删除一个图像,我需要删除该图像数据和名称以及该日期的特定行索引,如果单击删除按钮,则会显示此错误“发送到不可变对象的变异方法”
    • k,这就是为什么我告诉你创建一个对象类的子类 NSObject,如上所述。制作一个对象数组 (NSMutableArray),包含您的图像数据、名称和日期。在表格单元格中获取对象并在单元格中设置。删除/删除时,只需从数组中删除该对象。简单
    • 这个错误是由于你写了很多复杂的代码。只需通过使用对象数组来避免这种情况
    猜你喜欢
    • 2016-12-25
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 2021-03-27
    • 2016-11-09
    • 1970-01-01
    相关资源
    最近更新 更多