【问题标题】:NSData(contentsOfURL: url) always returning nilNSData(contentsOfURL: url) 总是返回 nil
【发布时间】:2016-02-15 08:59:54
【问题描述】:

我在一个新的操场上有这段代码

import Foundation

let blogsURL: NSURL = NSURL(fileURLWithPath: "/Users/Francis/Documents/Xcode_projects/KM registratie/blogs.json")
let data = NSData(contentsOfURL: blogsURL)

在第二行,操场告诉我它(正确地)初始化了引用 file:///Users/Francis/Documents/Xcode_projects/KM%20registratie/blogs.json 的 URL 在第三行,操场告诉我数据是nil

我已经用谷歌搜索了,但似乎没有任何问题是完全相同的问题。我找到了这个“NSData contentsOfURL constructor returns nil”,但是重新启动 Xcode 和重新启动我的整个计算机都不能解决问题。

【问题讨论】:

  • 不确定 %20,但应该是转义空格而不是编码:"/Users/Francis/Documents/Xcode_projects/KM\ registratie/blogs.json"
  • 只有在路径周围不加括号时才会转义,对吧?在这种情况下,没有必要逃离这个空间。但无论如何我都试过了,它在反斜杠上给出了语法错误
  • 我猜,操场在自己的沙箱中,无法访问外面的文件。
  • 感谢@vadian,我已经回答了这个问题,但我现在想知道 %20 在系统路径中是否合适:p
  • @Fr4nc3sc0NL URL 中的任何空格字符都必须进行百分比转义,即使在文件系统 URL 中也是如此

标签: swift null nsdata nsurl


【解决方案1】:

这里有答案:

XML parsing in swift

问题在于您的网址没有指向您认为的位置。您正尝试在沙盒的子目录中打开一个 URL,但它不存在。

您需要打开 Playground 的包内容(右键单击 Playground 并选择“显示包内容”,添加一个名为“Resources”的文件夹,然后将文件直接复制到那里。

然后你可以从主包中获取文件:

let url: NSURL! = NSBundle.mainBundle().URLForResource("blogs", withExtension: "json")

【讨论】:

    【解决方案2】:

    游乐场是沙盒的,似乎没有一种简单的方法可以到达他们的“盒子”之外。 XML parsing in swift这个问题的标题有点误导,上面的答案确实回答了这个问题

    【讨论】:

      猜你喜欢
      • 2015-12-10
      • 2016-10-19
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多