Swift Playground - 文件不可读

15

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 终端应用程序 Swift Playground


1
可能是Swift中的XML解析的重复问题。 - Nate Cook
1
Swift Playground是沙盒环境 - 您可以在此答案中了解如何将文件添加到播放环境容器中:https://dev59.com/qoTba4cB1Zd3GeqP_9lD#26723557 - Nate Cook
Nate,所提到的问题标题并没有揭示我的问题。但似乎你在这个主题中发布了一个非常好的答案。谢谢! - D.A.H
3个回答

16

我必须首先感谢Nate Cook的快速回复和扎实的答案。

为了防止误导,请允许我分享他在另一篇文章中的答案。

请在此处查看Nate的答案:https://dev59.com/qoTba4cB1Zd3GeqP_9lD#26723557

Playgrounds被隔离,因此您不能仅仅从用户文件夹的任何位置获取文件。以下是将该文件添加到您的playground以使其可访问的方法:

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

似乎没有办法在Swift Playground之外访问文件。 如果您知道如何在sandbox之外访问文件,则欢迎分享您的解决方案!

显示包内容

资源文件夹


8
有几种方法可以将文件加载到Swift Playground中。我会重点介绍、和技术。

图像文字技术

这是最简单和最酷的方法。你只需从计算机的任何位置拖动文件到代码中,然后通过let或var语句分配它。GIF here. enter image description here

文件菜单技术

选择

查看此处的GIF.

上下文菜单技术

您可以使用右键单击菜单在Xcode(7.3.1)项目导航器中显示当前游乐场。在显示当前游乐场时,您将看到一个名为Resources的目录。只需将要访问的文件拖到该文件夹中,然后观看奇迹发生(假设您已编写了文件访问代码)。

示例资源加载代码

这里是一个用于显示图像的示例:

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)

我制作了一个动画GIF来演示这个过程。下面是其中的一张截图: 输入图片描述

读取外部代码

如果你想要添加辅助代码以及资源请使用Sources文件夹

关于控制台的注意事项

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


3
您还可以创建和使用共享游乐场数据文件夹。 就像这样:/Users/用户名/Documents/Shared Playground Data/file.txt
那里的任何文件都可以被任何游乐场读取!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接