Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

Swift 3 - No '+' candidates produce the expected contextual result type 'URL'

0 oy
243 kez görüntülendi
6, Ocak, 2017 ios development kategorisinde ibolat tarafından soruldu
6, Ocak, 2017 ibolat tarafından düzenlendi

Merhaba arkadaşlar,

Sanırım herkeste ki gibi uzun zaman sonra güncellediğim uygulamamda bir çok hata aldım şuanda tek takıldığım kısım bir butonun onClick anında 'URL' açmaya çalışıyorum ama click anında bana soru başlığındaki operatör hatasını veriyor. URL kullanıcı adı ve şifre değerlerini dışarıdan alıyor;

Kod linkteki şekilde;
https://paste.ubuntu.com/23751248/

2 Cevaplar

0 oy
6, Ocak, 2017 huseyinvural tarafından cevaplandı

Muhtemelen, url içinde verdiğin parametrelerden biri string değildir, bu yüzdende + oparatörüyle birleştirme yapamıyordur. Url içinde birleştirebilmek için iki değişkeninde opsiyonel olmadığından ve string formatında olduğundan emin olmalısın. Bu şekilde sorun çıkarmayacaktır.

İyi çalışmalar.

6, Ocak, 2017 ibolat tarafından yorumlandı
hüseyin bey, url içerisindeki parametreler string tipinde,
 
https://paste.ubuntu.com/23751381/

linke göz atarsanız bahsettiğiniz şekilde de kullanım yaptım ama yine başarılı olamadım

"fatal error: unexpectedly found nil while unwrapping an Optional value"

hatası aldım link'e değerler geliyor farklı bir string'e atayıp baktığımda çalışıyor link sıkıntı yok ama url olarak açmıyor.
6, Ocak, 2017 huseyinvural tarafından yorumlandı
6, Ocak, 2017 huseyinvural tarafından düzenlendi
Parametre olarak verdiğin değerlerin tipleri ne onu paylaşabilir misin ?

Son örneğinde paylaştığın şekilde çevirmeni zaten kabul etmez diye tahmin ediyorum.

https://paste.ubuntu.com/23751959/

Yukarıdaki örnekteki kullanımda sorun yaşamadım, tabi uygulama içinde bunu kullanıcaksan kullanmadan önce convert işleminin tamamlandığını check etmen daha sağlıklı olur.

Edit: String tipinde yazdığını görememişim, peki hiç build olmuyor değil mi ? Peki o parametreleri elle sen string olarak yazarsan, bu şekilde manuple ettiğinde çalışıyor mu ?

İllaki gözden kaçan ufak bir nokta var.
6, Ocak, 2017 ibolat tarafından yorumlandı
Değerler kullanıcıya ait tc ve kişiye özel şifre ben iki veri tipinide string olarak alıyorum UITextField' lerden ve var username:String = "" değişkenine atama yapıyorum. Sizin örneğide denemedim ama sonuç aynı :(
6, Ocak, 2017 huseyinvural tarafından yorumlandı
Editi atlamışsındır, diye tekrar yazıyorum :)

String tipinde yazdığını görememişim, hiç build olmuyor değil mi ? Peki o parametreleri elle sen string olarak yazarsan, bu şekilde manuple ettiğinde çalışıyor mu ?

Yeni textview dan alma direk değişkeni sne oluşturup, ata birini int birini string yap inti yani tc yi convert etmye çalış.

İllaki gözden kaçan ufak bir nokta var.
6, Ocak, 2017 ibolat tarafından yorumlandı
Kesinlikle gözden kaçan ufak bir nokta ama bulamadım, değerleri elimle girdim hüseyin bey ama  keşke if şartına girse url oluştursa hatayı anlasam ama debug ettiğimde if bloğuna düşüyor ve oradan sonra direkt çıkıyor if'ten. Demo bir veri paylaşmak isterdim ama hem öyle bir verim yok hemde şahsa ait verileri paylaşma iznim yok.
6, Ocak, 2017 huseyinvural tarafından yorumlandı
https://paste.ubuntu.com/23752107/

bunu deneyip, filtrelemek istediğin alan varsa onları gizleyip sonucu yazarmısın,
ama bence url encode ile alakalı
6, Ocak, 2017 ibolat tarafından yorumlandı
Sorun çözüldü hüseyin bey url içerisinde boşluk kalan yerler var oralara html karşılığını atadım  '%20'  çalıştı. :)
6, Ocak, 2017 huseyinvural tarafından yorumlandı
evet kullanmadan önce url encode etmek lazım, başka karakterlerdede sorun çıkar yoksa :)
0 oy
6, Ocak, 2017 yasin tarafından cevaplandı

şöyle bir deneyip log'ları kontrol edermisin.

@IBAction func GPerformance(_ sender: UIButton) {

    if let receivedUsername:String = USERNAME as? String {
        if let receivedPassword:String = USERPASSWORD as? String {
            if let url = URL(string: "https://blablanet.blabla.gov.tr/analytics/saw.dll?Dashboard&NQUser="+receivedUsername+"&NQPassword="+receivedPassword+"&portalPath=/shared/REPORT/_portal/PERFORMANCE&Page=WEEK%20Performance") {
                if #available(iOS 10.0, *) {
                    UIApplication.shared.open(url, options: [:])
                } else {
                    UIApplication.shared.openURL(url)
                }
            }
        } else {
            print("USERPASSWORD is nil")
        }
    } else {
        print("USERNAME is nil")
    }
}
6, Ocak, 2017 ibolat tarafından yorumlandı
Yasin bey, operatör hatası almıyorum ama debug modda çalıştırdığım zaman;                           if let url = URL(string: "https...  satırına geldiğinde if bloğundan çıkıyor içine girmiyor.
6, Ocak, 2017 ibolat tarafından yorumlandı
Yasin bey teşekkür ederim sorun çözüldü url içerisinde boşluk kalan yerler var oralara html karşılığını atadım '%20'  çalıştı.
...