尝试快速保存捕获的图像时出错

2023-11-29

在我的项目中,我正在捕捉图像。但是当它开始保存图像时,应用程序崩溃并出现以下错误 -

“打开包装时意外发现零”

我的代码如下-

//  Library Assets
    var assetCollection: PHAssetCollection!
    var photoAsset: PHFetchResult!

    let saveImage = UIImage(CGImage: cgImage, scale: 1, orientation: UIImageOrientation.Down)

                if let actualSaveImage = saveImage {
                //  Save image
                PHPhotoLibrary.sharedPhotoLibrary().performChanges({

                    let request = PHAssetChangeRequest.creationRequestForAssetFromImage(actualSaveImage)
                    let assetPlaceholder = request.placeholderForCreatedAsset
                    let albumChangeRequest = PHAssetCollectionChangeRequest(forAssetCollection: self.assetCollection, assets: self.photoAsset)
                    albumChangeRequest.addAssets([assetPlaceholder])
                    self.buttonCapture.hidden = false
                    self.activityIndicator.stopAnimating()
                    self.lastShotFlag = false
                    }, completionHandler: {(success, error)in
                        NSLog("\nSave Image -> %@", (success ? "Success" : "Error!"))
                })
                }
                else {
                    NSLog("\nProblem in saveImage. It's nil.")
                }

调试后看起来我没有得到常量的任何值专辑更改请求


问题是你从来没有付出过self.assetCollection or self.photoAsset任何值,所以它们为零。因此,当您尝试在 PHAssetCollection 更改请求初始值设定项中使用它们时,您会崩溃。

顺便说一句,如果您只想将图像保存到相机胶卷中,则不需要所有这些代码。您只需要创建请求即可。

或者,如果您想将图像保存到相机胶卷和相册中,则无需调用PHAssetCollectionChangeRequest(forAssetCollection:assets:)去做吧。

最后,你真的不应该在变更块中放置所有额外的东西。只需进行更改即可。其他的东西应该在完成块中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试快速保存捕获的图像时出错 的相关文章

  • Swift 和 Objective-C 框架公开其内部结构

    我正在尝试将 Swift 添加到具有公共 私有和项目文件的现有 Objective C 框架中 为了让 Swift 能够访问项目文件 我添加了一个定义新模块的模块映射 例如MyFramework Internal 通过包含所有项目标题 如下
  • Swift 3 - 如何从另一个视图插入 TableView 单元格?

    我正在使用 Swift 3 Xcode 8 2 我试图弄清楚如何从选项卡式视图控制器的另一个选项卡将单元格插入到表视图中 我的表视图 class MyTableView UITableViewController var items Ite
  • 如何在 iOS 上的视图之间进行展开/收缩转换?

    我正在尝试在 iOS 中制作过渡动画 其中视图或视图控制器似乎扩展以填充整个屏幕 然后在完成后收缩回原来的位置 我不确定这种类型的转换的正式名称是什么 但您可以在 iPad 版 YouTube 应用中查看示例 当您点击网格上的搜索结果缩略图
  • 如何在原生 Swift 中实现以前称为 NSMutableOrderedSet 的可变有序集泛型类型?

    我正在尝试实现一个通用的可变有序集类型 它需要符合许多协议才能以与 Swift 中的数组和集合相同的方式运行 首先要实现泛型类型元素需要符合Hashable https developer apple com documentation s
  • 无法将类型“(User?, Error?) -> ()”的值转换为预期参数类型“AuthDataResultCallback?”

    当我更新 firebase pod 时出现此错误 无法将类型 User Error gt 的值转换为预期参数类型 AuthDataResultCallback 又名 可选 gt static func signUp username Str
  • iOS 显示 UIImage 全屏并启用缩放(捏合和双击)

    我有一个UIImage从相机捕获UIImagePickerController 现在 在用户单击它之后 我希望它显示全屏 并且能够使用捏合手势进行放大和缩小 还可以使用双击手势来放大特定区域 换句话说 我想模拟ios默认图像浏览器的功能 我
  • 使 Swift 类符合需要 init 的协议

    我有以下内容protocol in Swift protocol FooConvertible typealias FooType init foo FooType 我会做Swift类在类定义中符合它 class Bar FooConver
  • 如何避免父ScrollView裁剪内部ScrollView?

    When a horizontal child ScrollView is nested inside a vertical parent ScrollView internal element is clipped by parent S
  • iOS 新手。预期的表达错误?

    这看起来很不寻常 因为该方法与我的 showAnswer 方法完全相同 所以我想我应该在这里问 import QuizViewController h interface QuizViewController end implementat
  • 让约束在尺寸类别中发挥作用

    所以 我正在 Xcode 6 beta 中尝试尺寸类 我对图像设置了一些限制 使其根据 iPhone 纵向和横向对应的尺寸类别处于不同的位置 这些限制在下图中可见 正如您所看到的 当我处于紧凑 紧凑状态时 一些约束被 安装 而其他约束则没有
  • 在 swift 中获取用户可读的类名版本(在 objc NSStringFromClass 中就可以了)

    Swift 中是否有相当于 NSStringFromClass 的类名 可以提供用户可读的版本 我尝试将它与我创建的本机 Swift 类一起使用 但如您所见 结果似乎是编译器对类名的内部表示 println NSStringFromClas
  • iOS 复合谓词

    我正在编写一个具有照片数据库的应用程序 每张照片都有多个与之关联的标签 并且该应用程序有一个带有大量切换的搜索页面 允许用户仅根据他们感兴趣的标签搜索照片 每个标签都存储了integerID 是因为它们对应于外部数据库的 ID 所以我尝试简
  • 在 iPhone 和 Cocos2d 中从类类型(+)方法访问对象?

    我有一个类方法 在其中创建并返回类对象 但我想访问同一类中该对象的某些属性 作为一个类方法 我无法在 h 文件中声明该变量 然后在其他方法中访问它 以下是代码 我如何在下面的实例方法中访问 backsprite 或 hudlayer 对象的
  • 将多个数组合并为一个数组

    如何将多个数组合并为一个二维数组 鉴于我有以下输入 var arr1 1 2 3 var arr2 a b c var arr3 aa bb cc 我需要这样的输出 1 a aa 2 b bb 1 c cc 我认为你想要的是将三个数组组合成
  • 使用 iOS 设备作为 TCP 客户端 - 无 Bonjour

    我想使用 iOS 设备作为 TCP 客户端 但我找不到可理解的 API 指南 示例来说明如何做到这一点 我试过SimpleNetworkStreams and PictureSharing 但他们都使用 Bonjour 我可以轻松建立 UD
  • 包含字符串和数字的数组

    在 Objective C 中 很容易创建一个异构数组 如下所示 NSArray myArray String1 String2 123 456 有什么方法可以快速创建这样的数组吗 如果是的话怎么办 Note 我在 swift 中尝试了类似
  • 子视图控制器旋转方法未被调用

    Summary 我试图将子视图控制器添加到父视图控制器 并让父视图控制器通知子视图控制器旋转事件 但是 旋转消息不会转发到子视图控制器 这是默认行为 为什么这种默认行为没有发生 环境 iOS 7 XCode 5 OSX 10 9 Detai
  • UINavigationController 在后退按钮单击时向下滚动

    我正在开发一个带有多个导航控制器的 iPhone iPad 应用程序 当我在设备处于横向模式时单击视图的后退按钮时 前一个视图会垂直滚动到屏幕中 而不是像往常一样水平滚动 推送动画始终水平工作 正如它应该的那样 是什么导致了这个奇怪的问题
  • 在 Flutter 中保存照片(尤其是保存到相机胶卷)

    我不知道如何保存到相机胶卷 相当于React Native的CameraRoll saveToCameraRoll https facebook github io react native docs cameraroll html sav
  • 您可以严格泛型类型或为一个参数指定多个类型吗?

    例如我想指定一个类型可能是Integer or String并将其用作特殊类型func我试过typealias但它不会解决这个问题 因为类型别名不能有or参数作为其唯一用途 因此请考虑下面的情况 typealias alis StringP

随机推荐

  • 将 Azure 流量管理器与移动应用程序结合使用

    Azure 流量管理器可以与移动应用程序一起使用 特别是通过社交登录吗 我已经配置了一个流量管理器和两个应用程序服务 例如 mobileapp1 和 mobileapp2 来使用它 它们似乎与邮递员和响应配合得很好 一切都正常 现在 我已在
  • 如何在Linux中使用addr2line命令?

    我试图在 Unix 中使用 addr2line 命令 但每次它都会给出与 0 相同的输出 我发出命令为addr2line e a out 0x4005BDC 我在运行这个 a out 可执行文件时得到了这个地址valgrind查找内存泄漏的
  • MathJax 未在 Sphinx 中呈现

    我在 Sphinx Rest 中有一个文档集 我已将 sphinx ext mathjax 包含在 conf py 中 并包含行 mathjax path http cdn mathjax org mathjax latest MathJa
  • 在上一个命令失败后创建带有红色 $ 的 Bash 命令提示符

    我是 Bash 编程新手 我正在努力创建一个自定义 Bash 命令提示符 我的目标是创建一个提示 仅在登录名和主机名与我通常使用的不同时显示它们 当位于 Git 版本控制下的目录中时 我还希望将当前的 Git 分支附加到命令提示符 我想将登
  • Android:查找动态创建的视图的ID

    我有以下问题 在 Android Studio 中我生成 enEditText动态地当ExerciseButton被点击 public void exerciseButtonClick View view EditText exercise
  • 在 Vertex AI 用户管理笔记本启动时公开现有环境的内核

    这是一个延续这个线程 发布在这里 因为它太复杂 无法发表评论 TL DR 在 Vertex AI 用户管理笔记本中 如何通过重复的停止和启动周期保留存储在数据磁盘上的现有 venv 以及 conda 如果可能 环境的公开内核图标 Detai
  • 为什么 scrapy xpath 函数不支持 'matches()' 语法?

    我正在运行 scrapy 0 20 2 scrapy shell http newyork craigslist org ata 我想列出广告页面的所有链接 并将其与index html分开 sel xpath a contains hre
  • 我可以配置 Hibernate/JPA 在仅修改非时间戳字段时更新实体记录吗?

    目前我有一个 Hibernate 实体类 如下所示 Entity Table name entity public class Entity implements Serializable private static final long
  • Elixir 到 Erlang 的转换

    我想看看当 Elixir 转换成 Beam 文件时会发生什么 有没有办法在控制台或文件中打印它的翻译方式 我想知道这个模块在 erlang 中是什么样子的 我在想是否有 Elixir 的调试模式 它会输出以上任何内容 更具体地说 我有这个例
  • PHP:oci_bind_by_name 和时间戳字段导致“ORA-01461:只能绑定 LONG 值以插入 LONG 列”

    我有一个 Oracle 数据库 需要将包含 YYYY MM DD HH MM SS 格式的日期的字符串插入 Oracle 时间戳字段中 为此我写了这段代码 date 2013 01 01 10 10 10 sql oci parse c I
  • 使用 nlm 函数进行多变量优化

    nlm 函数可以用于多变量优化吗 那会如何运作呢 例如 我想找到 x 和 y 以使 f x y 最小化 nlm 函数如何工作 类似的东西 nlm f c 0 1 0 1 创建一个接收向量的函数 f lt function X x lt X
  • 如何使用请求访问此类网站? [复制]

    这个问题在这里已经有答案了 这是我第一次遇到不允许我访问网页的网站 我不知道为什么 也不知道如何从这个网站上抓取 我的尝试 import requests from bs4 import BeautifulSoup def html url
  • nasm 系统调用 Linux

    我有一个关于汇编中的 linux x86 系统调用的问题 当我在 Linux 上使用 nasm 创建新的汇编程序时 我想知道必须使用哪些系统调用来执行特定任务 例如读取文件 写入输出或简单的退出 我知道一些系统调用 因为我读过它们在互联网上
  • 如何使用 PuTTY/Plink 在 Windows 批处理文件中的设备上顺序执行多个命令?

    我正在尝试使用 SSH 以自动化方式配置设备 bat脚本 在下面的代码片段中 我以正确的顺序生成一个包含所需命令的文件 然后使用 SSH 连接执行 读取该文件plink 这会导致一条错误消息 命令未知 我认为这是由于命令不是逐一执行而是插入
  • 如何按键对对象数组进行分组?

    如何通过对象键对对象数组进行分组 以根据分组创建新的对象数组 例如 我有一系列汽车对象 const array red height 50 green height 20 blue height 30 blue height 40 red
  • 以值为条件对列运行求和

    我有一个二进制变量向量 用于说明该产品是否在该期间促销 我正在尝试弄清楚如何计算每次促销的持续时间以及促销之间的持续时间 promo flag c 1 1 0 1 0 0 1 1 1 0 1 1 0 换句话说 如果promo flag与上一
  • npm test --codecoverage 不生成报告

    不知道为什么当我击中时 npm test codecoverage 所有测试都正在执行 但是我看到一个空的 coverage 文件夹 没有任何报告 我用角度 cli 我做错了什么 如果您全局安装了 CLI 则命令为 ng test code
  • 无法通过下载 URL 检索文件内容

    大约一个小时以来 我无法通过下载 URL 属性检索文件内容 每次我尝试获取它时 API 都会回答 401 未经授权的错误 这是使用的代码 https gist github com arnaudbreton 5409015凭证存储在 GAE
  • 表单提交结果后使用 php 代码打开新窗口

    这是我一直在编写的脚本 它应该集成用户并在打开时通过 我这样做对吗 我想在用户将表单提交到 php 代码后打开一个弹出窗口 但我总是收到错误 将您的代码更改为此
  • 尝试快速保存捕获的图像时出错

    在我的项目中 我正在捕捉图像 但是当它开始保存图像时 应用程序崩溃并出现以下错误 打开包装时意外发现零 我的代码如下 Library Assets var assetCollection PHAssetCollection var phot