【问题标题】:Swift NSMutableArray add one more arraySwift NSMutableArray 再添加一个数组
【发布时间】:2015-09-07 15:03:18
【问题描述】:

问题是我第一次从WebServices 获取数据,所以我在TableView 上显示了这些数据然后用户向下滚动tableview 然后再次调用WebSevices 并再次将此数据添加到数组中 但是当我尝试在 nsmutable 类型数组中再次添加数据时,应用程序 崩溃

这是我的代码。有什么解决办法吗?

第一次数据加载正常

 var ary_mutable: NSMutableArray! 
 ary_mutable = NSMutableArray()
        ary_mutable=jsonResult as AnyObject as! NSMutableArray
                        self.tbl_T.reloadData();
                        self.tbl_T.delegate=self;
                        self.tbl_T.dataSource=self;

第二次数据加载和添加旧数组不起作用

var myArray :NSArray!
                myArray = jsonResult as AnyObject as! NSArray
 ary_mutable.addObject(myArray.objectAtIndex(0))

遇到这个错误

[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'

我也尝试过这段代码,但不工作

ary_mutable.addObject(myArray)

【问题讨论】:

    标签: ios swift nsmutablearray add


    【解决方案1】:

    您应该从不可变数组创建一个可变数组。这个:

    ary_mutable=jsonResult as AnyObject as! NSMutableArray
    

    不这样做,它只是从一种类型到另一种类型的静态转换。您必须构造一个新的 NSMutableArray,然后用所需的值填充它。

    将您的代码更改为

    var ary_mutable = NSMutableArray()
    
    // everytime you receive a new data
    ary_mutable.addObjectsFromArray(jsonResult as! [AnyObject])
    

    【讨论】:

    • 此代码替换旧数据。但是要求是(旧数组数据)+(新数组数据)意味着第一次加载数据现在计数是 15 然后再次加载 5 个数据现在数组计数是 20 喜欢这种类型请帮助我
    • 非常感谢您uuuuuuuuu它的工作
    【解决方案2】:

    替换此代码:

    var myArray :NSArray!
    myArray = jsonResult as AnyObject as! NSArray
    ary_mutable.addObject(myArray.objectAtIndex(0))
    

    使用此代码:

    var myArray : NSMutableArray!
    myArray = jsonResult as AnyObject as! NSMutableArray
    ary_mutable.addObjectsFromArray(myArray as [AnyObject]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多