2016-05-30 4 views
1

Ich benutze NSDataDetector, um einen Text nach Links zu scannen und sie dann zurückzugeben. Ich habe es funktioniert für das normale Alphabet, aber da ich in einem Land mit einigen Ergänzungen zum englischen Alphabet lebe, kann ich den NSDataDetector nicht entdecken, Verbindungen, die diese Zeichen enthalten.NSDataDetector erkennt Sonderzeichen in Links

Insbesondere ist es das "åäö", das nicht funktioniert. Mein Code sieht wie folgt aus:

var urlStrings = [String]() 

let types: NSTextCheckingType = .Link 

do { 
     let detector = try NSDataDetector(types: types.rawValue) 
     let matches = detector.matchesInString(self, options: .ReportCompletion, range: NSMakeRange(0, self.characters.count)) 

     for match in matches { 

      if let url = match.URL?.absoluteString { 
       urlStrings.append(url) 
      } 
     } 
     return urlStrings 
     } catch { 
     return urlStrings 
    } 
+0

Können Sie nach, welche nicht spezifisch tun Links Arbeit für Sie, denn Ihr Code funktioniert perfekt für mich mit dieser Zeichenfolge "http: //www.gåäögle.com/testMasåäö http: // www.google.com/testMasåäö" –

+0

@ReinierMelian dieser http://www.gp .se/livsstil/konsument/vegetarioskt-är-inte-alltid-så-nytigt-1.1236926 – ClockWise

+0

Kannst du deinen Link auf 'code' setzen? –

Antwort

0

Hallo ich habe eine kleine Änderung an Ihrem Code und arbeiten perfekt für mich

func detectLinks() -> [String] 
{ 
    let string = "http://www.gåäögle.com/testMasåäö http://www.google.com/testMasåäö http://www.gp.se/livsstil/konsument/vegetariskt-ä4r-inte-alltid-så5-nyttigt-1.1236926" 
    var urlStrings = [String]() 

    let types: NSTextCheckingType = .Link 

    do { 
     let detector = try NSDataDetector(types: types.rawValue) 
     let matches = detector.matchesInString(string, options: .ReportCompletion, range: NSMakeRange(0, string.characters.count)) 

     for match in matches { 

      if let url = match.URL?.absoluteString { 
       urlStrings.append(url) 
      } 
     } 
     return urlStrings 
    } catch { 
     return urlStrings 
    } 


} 

Vielleicht ist Ihr Problem zu self.characters.count verwandt ist, können Sie überprüfen, was falsch ist, aber für mich Dieser Code funktioniert gut, urlStrings enthält 3 Zeichenfolgen nach dem Ausführen dieses Codes. Ich hoffe, dass diese Ihnen helfen,

+0

@ClockWise Ich überprüfe meine alten Antworten, diese Antwort funktioniert für Ihr Problem? wenn nicht, lass mich wissen, um zu löschen –

0

ich diesen Code bin mit Links zu machen, dass es nicht abstürzen, wenn Sonderzeichen ist drin wie: „AEOA“

var url = "http://www.someurlwithæøåorsomethingelse.com" 
let safeUrl = url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())