2017-01-13 80 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)