swift,每次在XCode重新点击run时上一次保存的图片都会消失

[复制链接]
240 5
存储图片的代码(此时图片已经在一个UIImageView里)(还有原谅我用中文命名变量)
//获取图片数据
let 图片数据:Data = UIImageJPEGRepresentation(图片框.image!, 1.0)!
//以时间作为文件名
let 当前时间:Date = Date()
let 时间格式 = DateFormatter()
时间格式.dateFormat = "yyy-MM-dd 'at' HH:mm:ss.SSS"
let 当前时间字符串 = 时间格式.string(from: 当前时间) as String
//综合路径 去除时间中的空格
let 图片路径:String = 应用主目录+"/"+deleteSpaces(当前时间字符串)+".jpg"
//写入图片
writeDataToEndOfFile(fileURL: 图片路径, contentToWrite:图片数据, create: true)
//此处继续写入相应信息到主数据txt里

//写入文件
func writeDataToEndOfFile(fileURL url1:String,contentToWrite fileData:Data,create createOrNot:Bool){

let fM:FileManager = FileManager.default

if( !fM.fileExists(atPath:url1) && createOrNot ){
fM.createFile(atPath: url1, contents: nil, attributes: nil)
}
let fUpdater:FileHandle = FileHandle(forUpdatingAtPath: url1)!
//写入新的
fUpdater.seekToEndOfFile()
fUpdater.write(fileData)
fUpdater.closeFile()
}

读取图片的代码
//读图,无文件时自动生成
func readImage(imageUrl url:String) -> UIImage? {
       
        let fM:FileManager = FileManager.default
       
        if( !fM.fileExists(atPath:url)){
        print(!fM.fileExists(atPath:url))
        fM.createFile(atPath: url, contents: nil, attributes: nil)
        print(!fM.fileExists(atPath:url))
        }
let fUpdater:FileHandle = FileHandle(forUpdatingAtPath: url)!
let imageData:Data = fUpdater.availableData
        fUpdater.closeFile()
let image = UIImage(data:imageData)

return image
}

在不在xcode上再次点run的情况下,图片是可以顺利从本地读取出来的
但每次只要再次点run,图片就消失了,再次尝试读取就会在创建fileHandle 的那一行出现 unexpected found nil when unwrapping an optional value 的报错

有点急,非常感谢!

举报 使用道具

回复

5 个评论

Vickicoerb  新手上路  发表于 2019-2-13 18:51:19  | 显示全部楼层
存储图片的代码(此时图片已经在一个UIImageView里)(还有原谅我用中文命名变量)
//获取图片数据
            let 图片数据:Data = UIImageJPEGRepresentation(图片框.image!, 1.0)!
            //以时间作为文件名
            let 当前时间:Date = Date()
            let 时间格式 = DateFormatter()
            时间格式.dateFormat = "yyy-MM-dd 'at' HH:mm:ss.SSS"
            let 当前时间字符串 = 时间格式.string(from: 当前时间) as String
            //综合路径 去除时间中的空格
            let 图片路径:String = 应用主目录+"/"+deleteSpaces(当前时间字符串)+".jpg"
            //写入图片
            writeDataToEndOfFile(fileURL: 图片路径, contentToWrite:图片数据, create: true)
            //此处继续写入相应信息到主数据txt里

//写入文件
func writeDataToEndOfFile(fileURL url1:String,contentToWrite fileData:Data,create createOrNot:Bool){
   
    let fM:FileManager = FileManager.default
   
    if( !fM.fileExists(atPath:url1)  &&  createOrNot ){
        fM.createFile(atPath: url1, contents: nil, attributes: nil)
    }
    let fUpdater:FileHandle = FileHandle(forUpdatingAtPath: url1)!
    //写入新的
    fUpdater.seekToEndOfFile()
    fUpdater.write(fileData)
    fUpdater.closeFile()
}

读取图片的代码
//读图,无文件时自动生成
func readImage(imageUrl url:String) -> UIImage? {
       
        let fM:FileManager = FileManager.default
       
        if( !fM.fileExists(atPath:url)){
                print(!fM.fileExists(atPath:url))
                fM.createFile(atPath: url, contents: nil, attributes: nil)
                print(!fM.fileExists(atPath:url))
        }
    let fUpdater:FileHandle = FileHandle(forUpdatingAtPath: url)!
    let imageData:Data = fUpdater.availableData
        fUpdater.closeFile()
    let image = UIImage(data:imageData)
   
    return image
}

在不在xcode上再次点run的情况下,图片是可以顺利从本地读取出来的
但每次只要再次点run,图片就消失了,再次尝试读取就会在创建fileHandle 的那一行出现 unexpected found nil when unwrapping an optional value 的报错

有点急,非常感谢!

举报 使用道具

回复
VitalkoRardy  新手上路  发表于 2019-2-13 20:02:32  | 显示全部楼层
依然没有解决啊

举报 使用道具

回复
NasomaEdilm  新手上路  发表于 2019-2-13 20:20:12  | 显示全部楼层
对了,我获取应用主目录的代码:
let 应用主目录 = NSHomeDirectory()+"/Documents"

举报 使用道具

回复
SofgerAllot  新手上路  发表于 2019-2-13 20:52:23  | 显示全部楼层
不明白什么意思。xcode每次运行app的时候,都会重新生成随机的app路径。这个路径如果你想拿只能拿到本次运行的路径。

举报 使用道具

回复
flair71  新手上路  发表于 2019-2-13 22:02:10  | 显示全部楼层
不要强转,会出问题的

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

ios.irunthink.com
搜索
热搜: iOS swift 下拉刷新

图文热点

更多

开发教程

更多

客服中心

400-800 周一至周日 9:30-17:30 仅收市话费

关注我们

  • 微信扫描
  • 关注微信
关于我们
关于我们
友情链接
联系我们
帮助中心
精贴推荐
源码上传
注册登录
服务支持
资源下载
关注我们
官方微博
官方空间
快速回复 返回顶部 返回列表