2016-05-30 105 views
1

所以我在我的Localizable.strings下面的鏈接文件:超鏈接與不工作在iOS%@

someURL = "https://www.thisisthelink.be/api/article?categoryId=%@&key=ehhssd%bfbfs43-53456Gdffd~563&lang=nl&amount=1000&mobile=true"; 

哪裏有%@我需要這一類的ID填寫(該部分例如27)。所以在我的代碼還我下面

let URL = String(format: "someURL".localized,String(id)) 

但是,這給人一種死機了,我真的不知道爲什麼(崩潰只是一個線程1:EXC_BREAKPOINT(代碼= 1,...),所以我無法推斷出什麼是錯的)。

的.localized是以下擴展

extension String { 
    var localized: String { 
     return NSLocalizedString(self, comment: "") 
    } 
} 
+0

'但是,這給出了一個crash'有什麼錯誤訊息?它出現在哪裏? – Moritz

+0

@EricD崩潰只是一個線程1:。EXC_BREAKPOINT(代碼= 1,......它出現在'讓URL'線的錯誤信息是超級通用的,甚至沒有出現在輸出了 – SoundShock

+0

請問'打印(「someURL」 .localized)'輸出什麼樣的預期?貌似有一個與本地化的字符串的問題。 – Moritz

回答

0

我想沒有問題有關的特殊字符,但你可以嘗試這樣做:

let specialChars = "%@" 
someURL = "https://www.thisisthelink.be/api/article?categoryId=\(specialChars)&key=ehhssdbfbfs4353456Gdffd4563&lang=nl&amount=1000&mobile=true" 
let uRL = String(format: NSLocalizedString(someURL, comment: "someURL"), String(id)) 

我不喜歡本地化網址因爲它們可能具有不可預知的組成,所以最好的方法是僅將文本本地化以避免格式問題。

P.S:通常使用大寫的屬性命名它看作是一個態度不好,你應該使用uRLstr或URL,而不是URL

+0

「特殊字符」 是String格式聲明它的字符串外面再。插入它 - 在使用String之前(格式:) - 不會改變任何東西... – Moritz

+0

這是不正確的。當你使用字符串插值,並且你使用的字符串中包含另一個百分比字符的格式時,編譯器可能會崩潰,知道什麼樣的ameters可以有這個網址,所以它是分開它的最好方法 –

+1

你說得對,關於這一點的確如此。 – Moritz

0

的,我不明白你爲什麼要這樣的請求。以我的方式,我使用基本URL +接口名稱+參數。像使用AFNetworking一樣,params應該是一個容易生成的字典。

無論如何,如果你想有一個長串狀的URL,在斯威夫特你最好用「的categoryId = \(ID)」來加載你想要不同的ID。

最後,如果你堅持使用:

String(format: someURL, arguments: ["123"])

+0

你能舉一個例子嗎?我使用AlamoFire以及 – SoundShock

+0

'Manager.sharedInstance.request(方法,api.apiURLString(),參數:參數,可以編碼:.URL,標頭:無)'params爲[字符串:AnyObject]。 'api'是APIManager,一個對象類提供了一些關於API的信息(比如完整的URL字符串)。 –