2017-02-24 2 views
1

Ich bin neu zu swift. Ich möchte wissen, wie man ein Objekt in einer for-each-Schleife mit swift ändert. zum Beispiel:Ändern Sie einen Objektwert im Array mit swift

Struktur MyCustomObject { var customValue: String? }

let myArray: [? MyCustomObject]

for anObject:MyCustomObject in myArray { 
    anObject.customValue = "Hello" // <---Cannot assign to property: 'anObject' is a 'let' constant 
} 

so, was soll ich tun, wenn ich den Objektwert in einer for-Schleife ändern möchten. Ich müde, "Var" vor AnObject, aber es funktioniert nicht !! (Die Objekte in der Anordnung nach wie vor unverändert.)

Für Objective C, ist es leicht,

NSMutableArray * myArray = [NSMutableArray array];

for (MyCustomObject * object in myArray) 
{ 
    object.customValue = "Hello" 
} 
+0

Ist 'myArray' eine' let' oder 'var'? –

+0

myArray ist ein "Let". enumerieren Sie Ihr Array und ändern Sie das Array-Element mit dem Index <--- mehr Beispiel? –

+0

Möchten Sie, dass die Änderungen dauerhaft in Ihrem Array bleiben oder möchten Sie diese nur vorübergehend während der Schleife? – Sven

Antwort

2

Das ist, weil in einem Array gespeicherten Werte unveränderlich sind. Sie haben 2 Möglichkeiten:

1: MyCustomObject zu einer Klasse ändern:

class MyCustomObject { var customValue: String? } 

2: iterate von Index

for i in 0..<myArray.count { 
    if myArray[i] != nil { 
     myArray[i]!.customValue = "Hello" 
    } 
} 
0
let temObj:MyCustomObject = anObject 
temObj.customValue = "Hello" 
Verwandte Themen