如何添加两个可变数组? Swift
how to add two mutable array? Swift
在我的应用程序中,我想实现下拉刷新。因此,当滚动视图向下滚动时,它会加载更多数据。现在第一次加载页面时,我将数据保存在 videoArray 数组中,当向下滚动时,我在 videoArray2 数组中获得数据,所以我如何添加值videoArray2 到 videoArray?两者都是 nsmuttablearray.
这是我的代码:
var videoArray : NSMutableArray = NSMutableArray()
var videoArray2 : NSMutableArray = NSMutableArray()
我第一次在这个数组中存储值
self.videoArray = (response.result.value)?.valueForKey("posts") as! NSMutableArray
我第二次在这个数组中存储值
self.videoArray2 = (response.result.value)?.valueForKey("posts") as! NSMutableArray
这就是我尝试追加的方式
for enumerator in self.videoArray2
{
self.videoArray.addObject(enumerator)
}
但它的抛出错误类似于
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
那我该如何解决呢?
let videoArray = (response.result.value)?.valueForKey("posts") as! NSArray
self.videoArray = NSMutableArray(array:videoArray)
第二个数组也一样
Swift方式就这么简单
var array : [AnyObject] = [AnyObject]()
var array1 : [AnyObject] = [AnyObject]()
//Add array like this
array.appendContentsOf(array1)
或者像你声明的那样
var videoArray : NSMutableArray = NSMutableArray()
var videoArray2 : NSMutableArray = NSMutableArray()
//Add like this
videoArray.addObjectsFromArray(videoArray2 as [AnyObject])
或
videoArray2.enumerateObjectsUsingBlock { (data, index, finished) in
self.videoArray.addObject(data)
}
// (response.result.value)?.valueForKey("posts") 返回 NSArray 所以你必须把它放在一个数组对象中然后你可以将所有对象传输到你的可变数组
let array = (response.result.value)?.valueForKey("posts") as! NSMutableArray
self.videoArray = NSMutableArray(array:array)
// 添加对象从 videoArray2 到 videoArray
self.videoArray.addObjectsFromArray(self.videoArray2)
Replace this line code
self.videoArray = (response.result.value)?.valueForKey("posts") as! NSMutableArray
With
let vidArray = response.result.value)?.valueForKey("posts") as! NSArray;
self.videoArray = vidArray.mutableCopy() as! NSMutableArray
First Line of code get the data from server as NSArray and later second line creates a mutable copy of that array.
Now Code below Run as expected.
for enumerator in self.videoArray2
{
self.videoArray.addObject(enumerator)
}
Now you can add objects to the mutable copy of the videoArray.
在我的应用程序中,我想实现下拉刷新。因此,当滚动视图向下滚动时,它会加载更多数据。现在第一次加载页面时,我将数据保存在 videoArray 数组中,当向下滚动时,我在 videoArray2 数组中获得数据,所以我如何添加值videoArray2 到 videoArray?两者都是 nsmuttablearray.
这是我的代码:
var videoArray : NSMutableArray = NSMutableArray()
var videoArray2 : NSMutableArray = NSMutableArray()
我第一次在这个数组中存储值
self.videoArray = (response.result.value)?.valueForKey("posts") as! NSMutableArray
我第二次在这个数组中存储值
self.videoArray2 = (response.result.value)?.valueForKey("posts") as! NSMutableArray
这就是我尝试追加的方式
for enumerator in self.videoArray2
{
self.videoArray.addObject(enumerator)
}
但它的抛出错误类似于
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
那我该如何解决呢?
let videoArray = (response.result.value)?.valueForKey("posts") as! NSArray
self.videoArray = NSMutableArray(array:videoArray)
第二个数组也一样
Swift方式就这么简单
var array : [AnyObject] = [AnyObject]()
var array1 : [AnyObject] = [AnyObject]()
//Add array like this
array.appendContentsOf(array1)
或者像你声明的那样
var videoArray : NSMutableArray = NSMutableArray()
var videoArray2 : NSMutableArray = NSMutableArray()
//Add like this
videoArray.addObjectsFromArray(videoArray2 as [AnyObject])
或
videoArray2.enumerateObjectsUsingBlock { (data, index, finished) in
self.videoArray.addObject(data)
}
// (response.result.value)?.valueForKey("posts") 返回 NSArray 所以你必须把它放在一个数组对象中然后你可以将所有对象传输到你的可变数组
let array = (response.result.value)?.valueForKey("posts") as! NSMutableArray
self.videoArray = NSMutableArray(array:array)
// 添加对象从 videoArray2 到 videoArray
self.videoArray.addObjectsFromArray(self.videoArray2)
Replace this line code
self.videoArray = (response.result.value)?.valueForKey("posts") as! NSMutableArray
With
let vidArray = response.result.value)?.valueForKey("posts") as! NSArray;
self.videoArray = vidArray.mutableCopy() as! NSMutableArray
First Line of code get the data from server as NSArray and later second line creates a mutable copy of that array.
Now Code below Run as expected.
for enumerator in self.videoArray2
{
self.videoArray.addObject(enumerator)
}
Now you can add objects to the mutable copy of the videoArray.