2014-06-07 10 views
9

Ho implementato StringLiteralConvertible, che si estende ExtendedGraphemeClusterLiteralConvertible. Sembra che voglia che implementi anche questo. Quando lo faccio, però, Xcode dice che non sa che cosa è ExtendedGraphemeClusterLiteralType. Non sono sicuro di ciò che vuole da me ...Implementazione StringLiteralConvertible su NSURL

extension NSURL : StringLiteralConvertible { 
    class func convertFromStringLiteral(value: StringLiteralType) -> Self { 
     return self(string: value) 
    } 

    class func convertFromExtendedGraphemeClusterLiteral(value: ExtendedGraphemeClusterLiteralType) -> Self { 
     // Use of undeclared type ExtendedGraphemeClusterLiteralType :(? 
    } 
} 

let url : NSURL = "http://apple.com" 

risposta

2

Il problema è correlato all'estensione non conforme al protocollo. Se CMD + clic sul protocollo StringLiteralConvertible, a seguirlo per la sua definizione, vi accorgerete che lo StringLiteralType typealias e typealias ExtendedGraphemeClusterLiteralType sono impostati per stringa.

Detto questo, è necessario modificare l'estensione al seguente:

extension NSURL : StringLiteralConvertible { 

    class func convertFromStringLiteral(value: String) -> Self 
    { 
       //do what you were going to do 
     return self() 
    } 

    class func convertFromExtendedGraphemeClusterLiteral(value: String) -> Self{ 
       //do what you were going to do 
     return self() 
    } 
} 

Informazioni su typealias è descritta nel libro "La programmazione Swift Language" dalle pagine 606-609, sotto i Tipi sezione associate .

+0

Grazie. Insomma, tutto quello che dovevo cambiare stava usando 'STRING' invece di' 'StringLiteralType' e ExtendedGraphemeClusterLiteralType'. Questo è stato un po 'inaspettato, dal momento che mi aspettavo di dover implementare i metodi nel protocollo esattamente come apparivano nella definizione del protocollo. – Jarsen

+2

A partire da Swift 1.1 questo non funziona più. – kareman

+0

Il follow up per 1.1 può essere trovato qui: http://stackoverflow.com/questions/27071880/implementing-stringliteralconvertible-on-nsurl-in-swift-1-1 – hnh