%@的超链接无法在iOS上运行

时间:2016-05-30 08:32:19

标签: ios swift hyperlink localization nslocalizedstring

所以我在Localizable.strings文件中有以下链接:

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: "")
    }
}

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我不明白你为什么要这样的请求。在我的方式,我使用基本URL +接口名称+ params。就像使用AFNetworking一样,params应该是一个易于生成的字典。

无论如何,如果你想要一个类似长字符串的URL,在Swift中你最好使用" categoryId = \(id)"加载你想要的不同id。

最后,如果你坚持使用它:

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