Swift NSMutableArray 添加另一个数组

3
问题是第一次从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)
2个回答

7
您应该从不可变数组创建一个可变数组。具体来说:
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。像这样的类型,请帮忙。 - Nishant Chandwani
非常感谢,它正在运行。 - Nishant Chandwani

2

replace this code:

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]);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接