在 IOS swift 应用程序中重写或删除现有的 .png 文件

Posted

技术标签:

【中文标题】在 IOS swift 应用程序中重写或删除现有的 .png 文件【英文标题】:Rewrite or delete existing .png file in IOS swift apllication 【发布时间】:2016-09-21 21:18:06 【问题描述】:

我想在我的 .png 图像上添加文本,它存在于我的 swift 应用程序中,并用这个编辑后的图像替换我的旧图像。 但是当我试图删除旧图像时,我收到了错误消息:

          Error : Error Domain=NSCocoaErrorDomain Code=513 "“Background.png” 
          couldn’t be removed because you don’t have permission to access it." 
        UserInfo=NSFilePath=/var/containers/Bundle/Application/57134C17-50A5-
    4709-9E3B-8013733175BA/SignatureApp.app/Background.png, NSUserStringVariant=(
                Remove
            ), NSUnderlyingError=0x12cd8c150 Error 
Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"

我用来删除旧 png 文件的代码是:

让 path = NSBundle.mainBundle().pathForResource("Background", ofType: "png")!

let fileManager = NSFileManager.defaultManager()
do 
    try fileManager.removeItemAtPath(path)

catch let error as NSError 
    print("Error: \(error)")

谁能告诉我如何?

【问题讨论】:

您最初是如何设置该图像的?在 Xcode 中使用图像资源,对吗?所以用新文件替换 imageAssets 中的那个文件。 不,它不在图像资源中,它直接在 Xcode 中,对于该解决方案,我无法使用图像资源 【参考方案1】:

我不相信你能做到这一点。该图像是您的应用程序包的一部分。您需要上传一个新的应用程序。

相反,您可以将图像存储在文档或缓存目录中,并在您的代码中检查该文件是否存在并加载它而不是 Background.png

【讨论】:

这是您应该采取的方法。如果需要,您甚至可以将您的应用程序应该使用的新路径写入NSUserDefaults。这也可以让您从头开始生成多个图像,以防万一,您知道,您的用户更改了您叠加的任何值。

以上是关于在 IOS swift 应用程序中重写或删除现有的 .png 文件的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 如何检查现有的 Core Data Store iOS

将现有的移动应用程序从 Android Native(Java) 和 IOS Native(Swift) 迁移到 React Native

使用 Swift 5 - PDFKit 在 iOS 中编辑和保存现有的 pdf 文档

Xcode:如何将 Unity 游戏添加到现有的 iOS 应用程序?

如何在 swift 3 中使用现有的 SQLite? (FMDB)

Swift:从 iOS 7 编译存档时出现分段错误