2017-08-13 30 views
11

Swift 3 kodumu Swift 4'e dönüştürmede sorun yaşıyorum. Uygulamadaki diğer her şeyi başarılı bir şekilde çevirmeyi başardım, ancak tek bir satırda sorun yaşıyorum kod:Swift 4: 'substring (to :)' kullanımdan kaldırıldı

cleanURL = cleanURL.substring(to: cleanURL.index(before: cleanURL.endIndex)) 

alıyorum hata şudur:

ViewController.swift:62:33: 'substring(to:)' is deprecated: Please use String slicing subscript with a 'partial range upto' operator. 
+0

, yeni bir tanımlamak yerine bir değişkeni mutasyona sokmanın mantıklı olduğundan emin misiniz? Son sembolü çıkardıktan sonra url "temiz" ise, o zamandan önce neden "cleanURL" denir? – Alexander

+1

[bu konuya bakın] (https://stackoverflow.com/q/45562662/6541007). Bir kopyası gibi görünüyor. – OOPer

cevap

20

Eh, hata 'kısmi aralık kadar' operatörü ile dize dilimleme simge kullanmak, söylediklerini yapmak:

let actuallyCleanURL = kindaCleanURL[..<kindaCleanURL.endIndex] 

Bunun bir Substring döndürdüğünü unutmayın. Daha fazla dilimleme işlemi yapmanız gerekiyorsa, bunları bu alt dizede yapın. İşiniz bittiğinde, String başlatıcıdan (String(mySubString)) çalıştırarak bir String numaranızı tanıtın ve belleğin bir kopyasına neden olun.

+1

Bu, bir String döndürmez, ancak String.SubSequence. İstenen OP gibi çalışabilmesi için String (...) ile bir dizgeye dönüştürmeniz gerekir. – timgcarlson

+0

@timgcarlson İyi nokta – Alexander

İlgili konular