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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值