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")
}
Образцы изображений:
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"
Техника контекстного меню
Вы можете показать текущую игровую площадку в 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
И любой файл, расположенный там, становится читаемым на любой игровой площадке!