超链接与不工作在iOS%@

问题描述:

所以我在我的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

我想没有问题有关的特殊字符,但你可以尝试这样做:

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

的,我不明白你为什么要这样的请求。以我的方式,我使用基本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字符串)。 –