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 AppSwift Playground

2 ответа

Решение

Я должен поблагодарить Нейта Кука за его быстрый ответ и твердый ответ.

На всякий случай делюсь своим ответом из другого поста, название которого вводит в заблуждение.

Смотрите ответ Нейта здесь: /questions/5159201/sintaksicheskij-analiz-xml-v-swift/5159215#5159215

Игровые площадки находятся в "песочнице", поэтому вы не сможете просто брать файлы из любой папки пользователя. Вот как можно добавить этот файл на игровую площадку, чтобы сделать его доступным:

  • Найдите свой файл.playground в Finder. Щелкните правой кнопкой мыши и выберите "Показать содержимое пакета".
  • Вы должны увидеть "timeline.xctimeline", "contents.xcplayground" и "section-1.swift"
  • Создайте новую папку под названием "Ресурсы", если она еще не существует.
  • Скопируйте ваши файлы в папку ресурсов

Кажется, что нет доступа к файлам с Swift Playground за пределами песочницы Playground. Если вы знаете, как получить доступ к файлам вне песочницы, вы можете поделиться своим решением!!

Показать содержимое пакета

Папка ресурсов

Есть несколько способов загрузить файлы в Swift Playground. Я выделю методы Image Literal, File Menu и Context Menu.

Имидж Буквальная техника

Это самый простой и самый холодный. Вы просто перетаскиваете файл из любого места на своем компьютере в код и назначаете его через let или же var заявление. GIF здесь. введите описание изображения здесь

Техника Файлового Меню

выберите File -> Add Files to "MyProjectName"

Смотрите GIF этого здесь.

Техника контекстного меню

Вы можете показать текущую игровую площадку в 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)

Я создал анимированный GIF, который демонстрирует это в действии. Вот скриншот из этого: введите описание изображения здесь

Чтение внешнего кода

Если вы хотите добавить вспомогательный код в дополнение к ресурсам, используйте папку Sources.

Примечание относительно консоли

Область консоли интерфейса Xcode Playground покажет вам, что UIImage пример nil когда вы загружаете файл изображения вне песочницы. Если вы ввели путь, который, как вы знаете, существует, но изображение не отображается, убедитесь, что UIImage экземпляр не печатается как nil,

Вы также можете создать и использовать папку Shared Playground Data. Просто так:

/ Пользователи / имя пользователя / Документы / Общие данные игровой площадки /file.txt

И любой файл, расположенный там, становится читаемым на любой игровой площадке!

Другие вопросы по тегам