2016-10-03 48 views
2

下面的代碼在我使用swift 2.2發佈和更新多次的應用程序中工作得很好。我剛剛遷移到swift 3,現在我得到以下編譯時錯誤; 「曖昧使用appendingPathComponent的」與線:解決ambiguous使用appendingPathComponent錯誤

let PDFPathFileName = documentDirectory.appendingPathComponent(fileName as String) 

在此:

func returnPDFPath() -> String { 
     let path:NSArray =   NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) as NSArray 
     let documentDirectory: AnyObject = path.object(at: 0) as AnyObject 
     let PDFPathFileName = documentDirectory.appendingPathComponent(fileName as String) 

     return PDFPathFileName 
} 

@IBAction func reveiwPDFSendCliked(_ sender: AnyObject) { 

    let pdfPathWithFileName = returnPDFPath() 

    generatePDFs(pdfPathWithFileName) 
} 

此代碼負責返回的文件路徑將被用來保存PDF文件documentDirectory當用戶點擊評論並保存PDF按鈕。任何建議將不勝感激。

回答

7

appendingPathComponent方法是NSString而不是AnyObject的方法。

改變這一行:

let documentDirectory: AnyObject = path.object(at: 0) as AnyObject 

到:

let documentDirectory = path.object(at: 0) as! NSString 

但你應該嘗試儘可能使用適當的類型。

嘗試這種情況:

func returnPDFPath() -> String { 
    let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) 
    let documentDirectory = path.first! as NSString 
    let PDFPathFileName = documentDirectory.appendingPathComponent(fileName as String) 

    return PDFPathFileName 
} 

此代碼假定path具有至少一個值(這是應)。

+0

沒有方法是'AnyObject'的方法。要查找具有給定方法的類,請在Xcode的參考文檔中進行搜索。 – rmaddy