Wenn Sie davon ausgehen können, dass jeder String so aufgebaut wird, wo die Wörter und URLs durch Leerzeichen getrennt sind - und die URLs alle in zwei geschweiften Klammern enthalten sind, könnten Sie eine Methode erstellen, die dann a string und teile es in ein Array von Teilstrings auf (getrennt durch Leerzeichen), dann kannst du nach einem Teilstring suchen, der mit "{{" beginnt, um zu wissen, dass es eine URL ist. Ich habe so etwas geschrieben, das ein Array von Tupeln zurückgibt, wobei jedes Tupel eine Ganzzahl ist (die mit dem Index der URL innerhalb des Arrays von Teilstrings korreliert), und eine Zeichenfolge, die die aus den geschweiften Klammern entfernte URL darstellt.
func split(_ s: String) -> [(Int, String)] {
// Separate the original string into an array of substrings separated by a space
let separated = s.components(separatedBy: " ")
// Filter the separated array to find the URLs that start with {{
var urls = separated.filter{ $0.hasPrefix("{{") }
// Map the urls array to get an array of ints correlating to their respective indices from the separated array
let indicies = urls.map { separated.index(of: $0) }
// create an empty array of Int and String tuples
var tuples: [(Int, String)] = []
// Loop through the url array
for i in 0 ..< urls .count {
// Remove the left side (open) curly brackets
urls[i] = urls[i].replacingOccurrences(of: "{{", with: "")
// Remove the right side (close) curly brackets
urls[i] = urls[i].replacingOccurrences(of: "}}", with: "")
// Append the tuple with the url's index from the separated array and it's actual url value as a string
tuples.append((indicies[i]!, urls [i]))
}
return tuples
}
Sie dann diese verwenden konnten die Worte von dem Urls zu spalten, und holen dann die Bilder (das bis zu Ihnen sein würde - vielleicht Alamofire verwenden oder auch nur NSURLSession
) und dann, da Sie ihren ursprünglichen Index aus Das Array der Teilstrings - Sie wissen immer noch, in welcher Reihenfolge sie angeordnet sind. Ordnen Sie sie also nach der ursprünglichen Reihenfolge neu an, sobald die asynchrone Anfrage zurückkommt, und verwenden Sie dann (oder umgekehrt), um den Inhalt in der wie du es versuchst.
vielen Dank. Ich sah die Tupel hat URLs Index und URL, aber wie man diese Tupel verwenden, um eine komplette NSMutableAttributedString zu bilden? Ich verstehe nicht ganz, sorry><" – DanielTing
Ich fand einen Fehler, wenn die URLs gleiche URL ist, wird Indicies immer habe den ersten gefunden ... – DanielTing