Swift 4:在循环中没有更多上下文的情况下,表达式的类型是不明确的



我有一个问题:

我正在取回一根由一些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方法返回一个子字符串数组:

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:)方法,该方法返回字符串数组而不是子字符串:

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

相关内容

  • 没有找到相关文章

最新更新