Swift 4:表达式类型不明确,循环内没有更多上下文
Swift 4: Type of expression is ambiguous without more context inside loop
我有一个问题:
我正在检索一个长字符串,该字符串由一些以“;”连接在一起的 base 64 字符串组成在所述字符串中将它们中的每一个分开。
这是我的代码:
if(item.photo != "null"){
let b64fullstring = item.photo
if(b64fullstring!.contains(";")){
let photos = b64fullstring!.split(separator: ";")
for pic in photos{
let base64encodedstring = pic
let decodedData = Data(base64Encoded: base64encodedstring!, options: Data.Base64DecodingOptions.ignoreUnknownCharacters)!
let decodedString = String(data: decodedData, encoding: .utf8)!
print(pic)
}
}
}
“数据”函数出现以下错误;
没有更多上下文,表达式类型不明确
我真的不明白。
在单个字符串上工作时,它工作得很好。但是当使用循环时,出于某种原因它会给出此消息。
感谢您抽出宝贵时间帮助我。
Swift 错误不是很有帮助。问题是 split 方法 returns 一个子字符串数组:
func split(separator: Character, maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true) -> [Substring]
并且数据初始值设定项需要一个字符串:
init?(base64Encoded base64String: String, options: Data.Base64DecodingOptions = [])
您只需要从您的子字符串初始化一个新字符串:
if let photos = b64fullstring?.split(separator: ";") {
for pic in photos {
if let decodedData = Data(base64Encoded: String(pic), options: .ignoreUnknownCharacters) {
if let decodedString = String(data: decodedData, encoding: .utf8) {
print(pic)
}
}
}
}
另一种选择是使用 components(separatedBy:)
方法,其中 returns 一个字符串数组而不是子字符串:
func components<T>(separatedBy separator: T) -> [String] where T : StringProtocol
if let photos = b64fullstring?.components(separatedBy: ";") {
for pic in photos {
if let decodedData = Data(base64Encoded: pic, options: .ignoreUnknownCharacters) {
if let decodedString = String(data: decodedData, encoding: .utf8) {
print(pic)
}
}
}
}
我有一个问题:
我正在检索一个长字符串,该字符串由一些以“;”连接在一起的 base 64 字符串组成在所述字符串中将它们中的每一个分开。
这是我的代码:
if(item.photo != "null"){
let b64fullstring = item.photo
if(b64fullstring!.contains(";")){
let photos = b64fullstring!.split(separator: ";")
for pic in photos{
let base64encodedstring = pic
let decodedData = Data(base64Encoded: base64encodedstring!, options: Data.Base64DecodingOptions.ignoreUnknownCharacters)!
let decodedString = String(data: decodedData, encoding: .utf8)!
print(pic)
}
}
}
“数据”函数出现以下错误; 没有更多上下文,表达式类型不明确 我真的不明白。 在单个字符串上工作时,它工作得很好。但是当使用循环时,出于某种原因它会给出此消息。
感谢您抽出宝贵时间帮助我。
Swift 错误不是很有帮助。问题是 split 方法 returns 一个子字符串数组:
func split(separator: Character, maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true) -> [Substring]
并且数据初始值设定项需要一个字符串:
init?(base64Encoded base64String: String, options: Data.Base64DecodingOptions = [])
您只需要从您的子字符串初始化一个新字符串:
if let photos = b64fullstring?.split(separator: ";") {
for pic in photos {
if let decodedData = Data(base64Encoded: String(pic), options: .ignoreUnknownCharacters) {
if let decodedString = String(data: decodedData, encoding: .utf8) {
print(pic)
}
}
}
}
另一种选择是使用 components(separatedBy:)
方法,其中 returns 一个字符串数组而不是子字符串:
func components<T>(separatedBy separator: T) -> [String] where T : StringProtocol
if let photos = b64fullstring?.components(separatedBy: ";") {
for pic in photos {
if let decodedData = Data(base64Encoded: pic, options: .ignoreUnknownCharacters) {
if let decodedString = String(data: decodedData, encoding: .utf8) {
print(pic)
}
}
}
}