使用 UIDocumentPickerViewController 在 Swift 中导入文本

Posted

技术标签:

【中文标题】使用 UIDocumentPickerViewController 在 Swift 中导入文本【英文标题】:Using UIDocumentPickerViewController to import text in Swift 【发布时间】:2015-02-21 02:19:28 【问题描述】:

我目前正在学习 ios 开发课程,作为我项目的一部分,我的任务是使用 UIDocumentPickerViewController 导入文本。我发现的每个示例都是 a) 用 Objective-C 编写的或 b) 用于导入 UIImage 文件。

如何设置文本文件的委托方法?

这是我目前得到的:

我已设置 iCloud 功能。 作品

指定委托,如下:

class MyViewController: UIViewController, UITextViewDelegate, UIDocumentPickerDelegate

我已为我尝试导入的文本类型设置了属性:

@IBOutlet weak var newNoteBody: UITextView!

我有一个IBAction 设置如下:

@IBAction func importItem(sender: UIBarButtonItem) 

    var documentPicker: UIDocumentPickerViewController = UIDocumentPickerViewController(documentTypes: [kUTTypeText as NSString], inMode: UIDocumentPickerMode.Import)
    documentPicker.delegate = self
    documentPicker.modalPresentationStyle = UIModalPresentationStyle.FullScreen
    self.presentViewController(documentPicker, animated: true, completion: nil)


我不知道下面的行应该是什么。 Apple 网站上的文档不清楚,我发现的每个示例都在 Objective-C 中或用于图像。

// MARK: - UIDocumentPickerDelegate Methods

func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) 
    if controller.documentPickerMode == UIDocumentPickerMode.Import 
        // What should be the line below?
        self.newNoteBody.text = UITextView(contentsOfFile: url.path!)
    

【问题讨论】:

【参考方案1】:

知道了!我有两个问题:

1) Apple 表示您必须在数组中指定 UTI。我将 documentType 称为KUTTypeText。它应该是数组中的"public.text"

这是 Apple 的 Uniform Text Identifiers (UTIs) 列表

@IBAction func importItem(sender: UIBarButtonItem) 

    var documentPicker: UIDocumentPickerViewController = UIDocumentPickerViewController(documentTypes: ["public.text"], inMode: UIDocumentPickerMode.Import)
    documentPicker.delegate = self
    documentPicker.modalPresentationStyle = UIModalPresentationStyle.FullScreen
    self.presentViewController(documentPicker, animated: true, completion: nil)


第二个问题是 Delegate 的句法问题,解决方法如下:

// MARK: - UIDocumentPickerDelegate Methods

func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) 
    if controller.documentPickerMode == UIDocumentPickerMode.Import 
        // This is what it should be
        self.newNoteBody.text = String(contentsOfFile: url.path!)
    

【讨论】:

我看到你使用.modalPresenationStyle,它真的有效吗?由于某种原因,即使我使用 PageSheet,选择器仍然以全屏模式显示 我想通过文档选择器选择多个文件,但允许MultipleSelection 在 UIDocumentPickerViewController 上不起作用,请帮助,提前致谢

以上是关于使用 UIDocumentPickerViewController 在 Swift 中导入文本的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)