2017-01-13 105 views
0

我試圖使用方法:蘋果雨燕3.0數據

init(contentsOf: URL, options: Data.ReadingOptions) 
在雨燕3.0

和Xcode 8.0。我使用的確切說法是:

let jsonData = try Data.init(contentsOf: URL(file_path), options: .mappedIfSafe) 

我也試過:

let jsonData = try Data(contentsOf: URL(file_path), options: .mappedIfSafe) 

我下面的documentation

這並不編譯,抱怨呼叫不正確的參數標籤。

我是一個斯威夫特的新手,所以請溫柔。 file_path是從NSOpenPanel獲得的字符串,並使用stringValue進行了字符串化。

謝謝!

+2

請注意,Swift約定使用'camelCase'而不是'snake_case'。 – Hamish

回答

5

不要一起使用字符串路徑與NSOpenPanel,得到url屬性 - 即避免了額外的步驟來創建URL - 和包裹Data初始化在do - catch塊。

if let url = openPanel.url { 
    do { 
     let jsonData = try Data(contentsOf: url, options: .mappedIfSafe) 
     // do things with jsonData 
    } catch { 
     print(error) 
    } 
} 
+0

避免字符串路徑可能是很好的建議,但它需要一些理由。它也似乎沒有太多關於OP所問的問題。 – Caleb

+1

我添加了一些理由 – vadian

+0

它的抱怨是:調用中有不正確的參數標籤(有'contentsOf:options:_:'expected'bytesNoCopy:count:deallocator:') –

1

看起來你只是錯過了參數標籤。另外,在Data構造函數中不需要init關鍵字。

let jsonData = try Data(contentsOf: URL(fileURLWithPath: filePath), options: .mappedIfSafe)