IOS-笔记19(Model Segue,Camera,File System)

来源:互联网 发布:淘宝墨猴一只多少元 编辑:程序博客网 时间:2024/05/21 07:15

Model Segue

      它是Segue的一种,它会拿下整个屏幕的控制权。开始时并没有什么特殊的,选择种类并准备即可,返回时则需要调用:

     presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
      这里的presentingViewController指的是呈现当前View的View,如果当前View还呈现了其他View,则会一同消失。

      如果你使用Unwind方法跳转则不需要调用这个方法。

Camera

      使用UIImagePickerController,这是UInavigationController的子类。首先还是要查询对应的资源是否可用,picker的可用资源有相册和相机。然后要设置要获取的媒体类型,视频或图像,kUTTypeImage,这个值来自于一个叫MobileCoreServices的古老的包,要记得引。接下来设置代理为自己。这里要注意的是,代理类不仅要声明实现UIImagePickerControllerDelegate,还要声明实现UINavigationControllerDelegate

        if UIImagePickerController.isSourceTypeAvailable(.Camera) {            let picker = UIImagePickerController()            picker.sourceType = .Camera            picker.mediaTypes = [kUTTypeImage]            picker.delegate = self            picker.allowsEditing = true            presentViewController(picker, animated: true, completion: nil)        }
       接下来实现代理方法:

   func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {        var image = info[UIImagePickerControllerEditedImage] as? UIImage        if image == nil {            image = info[UIImagePickerControllerOriginalImage] as? UIImage        }        imageView.image = image        makeRoomForImage()        dismissViewControllerAnimated(true, completion: nil)    }    func imagePickerControllerDidCancel(picker: UIImagePickerController) {        dismissViewControllerAnimated(true, completion: nil)    }

ALAssetsLibrary:

      这个可以帮助你把拍到的超片存到相册。

Persistence(将数据永久的储存在闪存中):

      Archiving:比较少用的方式,不过StoryBoard就是这么储存的。

      SQLite:以数据库的方式储存

      File System:每个应用有一个自己的沙盒,你的应用可以访问的文件都在这个沙盒里,具体每个文件夹你有什么权限,你可以查阅NSSearchPathDirectory。使用NSFileManager来访问FileSystem,它是线程安全的,只要你不在这个线程初始化,却在另一个线程使用就行。有一个默认的NSFileManager对象,这个只能在主线程使用,在其他线程使用则需要在那个线程里新建。

      //获取fileManager      let fileManager = NSFileManager()      //得到根目录URL      if let docsDir = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first as? NSURL {          //通过唯一的时间来得到唯一的文件名          let uniqueFileName = NSDate.timeIntervalSinceReferenceDate()          //在根URL后添加文件相对路径          let url = docsDir.URLByAppendingPathComponent("\(uniqueFileName).jpg")          //写数据到这个URL,atomically的意思是原子性:写入文件后,将原文件替换,再删除原文件,这样保证文件系统里的文件都是完整的          if imageData.writeToURL(url, atomically: true) {              pointEditable?.smallImageURL = url              pointEditable?.bigImageURL = url          }       }

      resourceValuesForKeys可以获得文件的创建时间之类的属性,传入不同的Key即可。

      Core Data:这个很重要,有空好好研究研究。



0 0