2016-07-06 65 views
2

我努力學習斯威夫特3與斯威夫特2.轉換代碼在迅速2,我看到這樣的代碼:StringByAppendingPathComponent()和將writeToFile()

return fullPath.stringByAppendingPathComponent(name) 

但是,當我嘗試斯威夫特3,我有similiar代碼,但這樣的:

return fullPath.strings(byAppendingPaths: [name]) 

的問題是,在第一代碼返回類型爲String(這就是我從我學到的教訓需要的輸出),但返回類型在第二個代碼中應該是[String]。

的另一個問題是,在斯威夫特2的代碼應該是:

imgData?.WriteToFile(fullPath, atomicaly:Bool) 

但是在斯威夫特3,我只可以輸入這樣的代碼:

imgData.Write(to: URL , option: WritingOption) throws 

但在一些例子中,有.Write(toFile:,原子:)但我無法在Xcode中找到它。

我翻譯不正確或錯誤地使用Swift 2和Swift 3?

+1

你想'fullPath.appendingPathComponent(name)' – dan

+0

@dan謝謝你的幫助,它的作品.. – RoccoBerry

回答

-1

關於您的問題的第一部分,如dan在評論中所述,您應該使用fullPath.appendingPathComponent(name)來代替。

關於你提到的第二個問題:

writeToFilewrite(to:之間的主要區別是,第一個是String S和秒是NSData

有點關係:

按照NSData Class Reference

在iOS中2.0+您有:

write(to:atomically:) 

write(toFile:atomically:) 

考慮:

由於目前只支持file:// URL,所以這個方法和writeToFile之間沒有 區別:atomically:,除了第一個參數的類型爲 。

根據Swift Changelog,這在Swift 3中沒有任何變化。

+1

我覺得很遺憾你的答案只回應評論而沒有添加任何東西。 – zneak

+0

@zneak,編輯回覆 – WMios

+0

我從我的課程示例中看到(寫入swift 2),他們使用imgData?.WriteToFile(fullPath,atomicaly:Bool)。 imgData是NSdata ?. fullPath是字符串中的路徑。然後,我用swift 3在xcode 8中試過,當我輸入imgData時,自動完成時沒有寫入(toFile:String,原子:)選項。我應該選擇寫(toFile)導致我的filePath是String。但我唯一的選擇只是寫(到:)。你知道如何解決它嗎? @WMios – RoccoBerry