Swift Playground - 文件不可读

时间:2014-11-17 15:49:10

标签: xcode swift xcode6 foundation swift-playground

在Swift Playground中无法读取文件

如何使文件可读?

相同的代码在Xcode终端应用程序上运行良好,但在Swift Playground上运行失败。

下面的演示代码。

import Foundation

println("Hello, World!")

var fname:String = "/Users/holyfield/Desktop/com.apple.IconComposer.plist"
var fm:NSFileManager = NSFileManager.defaultManager()

if(fm.fileExistsAtPath(fname)){
    println("File Exists")
    if(fm.isReadableFileAtPath(fname)){
        println("File is readable")
        var fd:NSData? = NSData(contentsOfFile: fname)
        println(fd?.length)
        let pl = NSDictionary(contentsOfFile: fname)
        println(pl?.count)
        println(pl?.allKeys)
    }else{
        println("File is not readable")
    }
}
else{
    println("File does not exists")
}

示例图片:

XCode Terminal App Swift Playground

3 个答案:

答案 0 :(得分:15)

我首先要感谢Nate Cook的快速反应和坚定的答案。

仅仅是因为我从另一篇文章中分享了他的答案,这个标题具有误导性。

请参阅Nate的回答:https://stackoverflow.com/a/26723557/2360439

  

游乐场是沙盒,因此您无法从用户文件夹中的任何位置抓取文件。以下是如何将该文件添加到您的文件中   操场让它可以访问:

     
      
  • 在Finder中找到您的“.playground”文件右键单击并选择“显示包内容”
  •   
  • 您应该看到“timeline.xctimeline”,“contents.xcplayground”和“section-1.swift”
  •   
  • 如果尚未存在,请创建一个名为“资源”的新文件夹。
  •   
  • 将文件复制到资源文件夹
  •   

似乎无法在Playground沙箱之外使用Swift Playground访问文件。如果您知道如何访问沙箱之外的文件,欢迎您分享您的解决方案!!

Show Package Contents

Resources Folder

答案 1 :(得分:7)

有几种方法可以将文件加载到Swift Playground中。我将重点介绍 Image Literal 文件菜单上下文菜单技术。

Image Literal技术

这是最简单和最酷的。您只需将文件从计算机上的任何位置拖到代码中,然后通过letvar语句进行分配。 GIF hereenter image description here

文件菜单技术

选择File -> Add Files to "MyProjectName"

See GIF of this here

上下文菜单技术

您可以使用右键单击菜单在Xcode(7.3.1)Project Navigator中显示当前的游乐场。在显示当前的游乐场后,您将看到名为“资源”的目录。只需将您想要访问的文件拖到该文件夹​​中,即可看到魔法发生(假设您已经编写了文件访问代码)。

示例资源加载代码

以下是显示图像的示例:

let url: NSURL! = NSBundle.mainBundle().URLForResource("IMG_4099", withExtension: "JPG")
let imagePath = url.path
let image = UIImage(contentsOfFile: imagePath!)
let imageView = UIImageView.init(image: image)

我已经制作了animated GIF来证明这一点。这是一个屏幕抓取: enter image description here

读取外部代码

如果您想添加辅助代码以及资源use the Sources folder

关于控制台的说明

当您在沙箱外部加载图像文件时,Xcode的Playground界面的控制台区域将向您显示UIImage实例为nil。如果您输入了一个您知道的路径,但图片未显示,请确保UIImage实例未打印为nil

答案 2 :(得分:0)

您还可以创建和使用 Shared Playground Data 文件夹。 就是这样:

/用户/用户名/文档/共享的游乐场数据/file.txt

任何游乐场都可以读取其中的任何文件!