2017-03-22 3 views
0

Ich arbeite mich durch this Tutorial zur Verwendung einer Geste auf einer Tabellenansicht Zelle mit CoreData.Konvertieren von Swift 2 nach Swift 3 Fehler

Ich habe das meiste davon konvertiert, da gibt es 2 Orte, wo ich auf ein Problem gestoßen bin.

1.

Swift2:

snapshot.transform = CGAffineTransformMakeScale(1.05, 1.05); 

Swift 3:

snapshot.transform = CGAffineTransform.scaledBy(1.05, 1.05) 

Dies ist der Fehler Ich erhalte:

Use of instance member 'scaledBy' on type 'CGAffineTransform'; did you mean to use a value of type 'CGAffineTransform' instead? 

Hier ist die zweite Ausgabe.

Swift 2:

let bool:Bool = indexPath!.isEqual(beginningIndexPath) as Bool 

Swift 3:

let bool:Bool = indexPath!.isEqual(beginningIndexPath) as Bool 

Fehler:

Value of type 'IndexPath' has no member 'isEqual' 

I die == als Ersatz zu verwenden versucht, aber das hat auch nicht funktioniert.

+0

ich einen Fehler erhalten, dass UIView kein Mitglied – icekomo

+0

‚scaledBy‘ hat Sie können auch sag: 'snapshot.transform = CGAffineTransform.identity.scaledBy (1.05, 1.05)' –

+0

2. Ausgabe: '==' soll funktionieren, wenn 'beginningIndexPath' auch' IndexPath' (ohne 'NS') ist. Und übergebe nicht einen 'Bool' zu einem' Bool' - welcher vom selben Typ ist. – vadian

Antwort

3

Erste Ausgabe, verwenden Sie einen Initialisierer:

CGAffineTransform(scaleX: 1.05, y: 1.05) 

Zweite Ausgabe, verwenden Sie die elementsEqual:

let bool = indexPath!.elementsEqual(beginningIndexPath) 
+0

.init ist nutzlos und sollte weggelassen werden, um klarer zu sein – Kalzem

+0

Ich verbeuge mich vor dir - das init sollte weggelassen werden – Frederik

+0

'let bool = indexPath! .elementsEqual (beginningIndexPath)' erzeugt diesen Fehler ': Argumenttyp 'NSIndexPath!' entspricht nicht dem erwarteten Typ 'Sequence'' – icekomo

0

Erste Ausgabe:

Es sollte:

snapshot.transform = CGAffineTransform(scaleX: 1.05, y: 1.05) 

Sie sollten init(scale​X:​y:​) CGAffineTransform Initialisierer verwenden.

Swift 3 hat viele Verbesserungen bei der Arbeit mit C-APIs, möglicherweise möchten Sie this proposal überprüfen.


Zweite Ausgabe:

Es sollte:

let bool = indexPath == beginningIndexPath! 

Beachten Sie, dass IndexPathStruct Konform Equatable Protokoll ist, sollte == Operator funktioniert gut.

Wenn Sie isEqual verwenden, nehme ich an, dass indexPath eine Instanz von NSIndexPath war; Ich empfehle die NSIndexPathKlasse Dokumentation zu überprüfen:

The Swift overlay to the Foundation framework provides the Index​Path structure, which bridges to the NSIndex​Path class. The Index​Path value type offers the same functionality as the NSIndex​Path reference type, and the two can be used interchangeably in Swift code that interacts with Objective-C APIs. This behavior is similar to how Swift bridges standard string, numeric, and collection types to their corresponding Foundation classes.

können Sie finden, was ist der genaue Grund, dass durch Scheck Mutability and Foundation Value Types Proposal.