2016-06-23 5 views
0

In meiner App möchte ich Pull-Down zum Aktualisieren implementieren. Wenn die Bildlaufansicht nach unten scrollt, werden mehr Daten geladen. Jetzt erstes Mal, wenn Seite geladen ich speichere Daten in videoArray Array, und wenn nach unten scrollen, ich habe Daten in videoArray2 Array so wie kann ich Wert von hinzufügen videoArray2-videoArray? beide sind nsmuttablearray.Wie zwei veränderbare Array hinzufügen? Swift

Hier ist mein Code:

var videoArray : NSMutableArray = NSMutableArray() 
var videoArray2 : NSMutableArray = NSMutableArray() 

erstes Mal, dass ich

self.videoArray = (response.result.value)?.valueForKey("posts") as! NSMutableArray 

zweites Mal, wenn ich

in diesem Array gespeicherten Wert in diesem Array gespeicherten Wert
self.videoArray2 = (response.result.value)?.valueForKey("posts") as! NSMutableArray 

Dies ist, wie ich versucht, anzufügen

for enumerator in self.videoArray2 
{ 
    self.videoArray.addObject(enumerator) 
} 

aber seine Wurf Fehler wie

*** Beenden app aufgrund abgefangene Ausnahme 'NSInternalInconsistencyException', Grund: -

'[__ NSCFArray insertobject: atIndex::] Mutieren unwandelbaren Verfahren zum Objekt gesendet'

Also wie kann ich das lösen?

+4

nicht 'NSMutableArray' verwenden Sie - stattdessen geben Swift native Array. Sie können ein 'NSArray', das Sie von objc erhalten, immer über bedingtes Downcasting zurück in ein natives Swift-Array überbrücken. – Hamish

+0

pure swift ist bessere Option und dann einfach 'appendContentsOf' Methode verwenden ... das ist alles –

Antwort

4
let videoArray = (response.result.value)?.valueForKey("posts") as! NSArray 
self.videoArray = NSMutableArray(array:videoArray) 

und das gleiche gilt für die zweite Anordnung

5

Es ist so einfach, wie dies in Swift Weg

var array : [AnyObject] = [AnyObject]() 
var array1 : [AnyObject] = [AnyObject]() 
//Add array like this 
array.appendContentsOf(array1) 

Oder so wie erklärt von Ihnen

var videoArray : NSMutableArray = NSMutableArray() 
var videoArray2 : NSMutableArray = NSMutableArray() 
//Add like this 
videoArray.addObjectsFromArray(videoArray2 as [AnyObject]) 

OR

videoArray2.enumerateObjectsUsingBlock { (data, index, finished) in 
     self.videoArray.addObject(data) 
    } 
+0

Wenn Sie Array in Swift-Datei für Obj-C-Datei deklariert verwenden, müssen Sie möglicherweise NSMutableArray verwenden. Schöne Antwort, @Amit. Vielen Dank. –

2

// (response.result.value) ?. ValueForKey ("Beiträge") Rückführen des NSArray, so dass Sie es in einem Array Objekt nehmen, dann können Sie alle Objekte in Ihrer MutableArray übertragen

let array = (response.result.value)?.valueForKey("posts") as! NSMutableArray 
self.videoArray = NSMutableArray(array:array) 

// Added Objekte aus videoArray2 videoArray

self.videoArray.addObjectsFromArray(self.videoArray2) 
0
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. 
Verwandte Themen