首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用可编码和文件管理器将数据保存在save 4中

如何使用可编码和文件管理器将数据保存在save 4中
EN

Stack Overflow用户
提问于 2017-10-03 17:01:29
回答 1查看 2K关注 0票数 5

大家好,每个人都知道如何快速保存数据,我制作了一个表情符号应用程序,我可以描述这个表情符号,我有一个未来,我可以在应用程序中保存新的表情符号,我在我的表情符号类中编写了这段代码,但是当我想返回表情符号时,我得到一个错误,请帮助我。

代码语言:javascript
运行
复制
import Foundation

struct Emoji : Codable {
    var symbol : String
    var name : String
    var description : String
    var usage : String
    static let documentsdirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
    static let archiveurl = documentsdirectory.appendingPathComponent("emojis").appendingPathExtension("plist")

    static func SaveToFile (emojis: [Emoji]) {
        let propetyencod = PropertyListEncoder()
        let encodemoj = try? propetyencod.encode(emojis)
        try? encodemoj?.write(to : archiveurl , options : .noFileProtection)
    }
    static func loadeFromFile () -> [Emoji] {
    let propetydicod = PropertyListDecoder()
        if let retrivdate = try? Data(contentsOf: archiveurl),
        let decodemoj = try?
            propetydicod.decode(Array<Emoji>.self, from: retrivdate){

        }
        return decodemoj        in this line i get error
    }

}
EN

回答 1

Stack Overflow用户

发布于 2017-10-03 17:14:03

发生此错误是因为decodemoj超出了作用域。你需要写

代码语言:javascript
运行
复制
static func loadeFromFile() -> [Emoji] {
    let propetydicod = PropertyListDecoder()
    if let retrivdate = try? Data(contentsOf: archiveurl),
       let decodemoj = try? propetydicod.decode(Array<Emoji>.self, from: retrivdate) {
         return decodemoj
    }
    return [Emoji]()
}

并在发生错误时返回空数组。或者,将返回值声明为可选数组并返回nil

但是为什么不使用do - catch块呢?

代码语言:javascript
运行
复制
static func loadeFromFile() -> [Emoji] {
   let propetydicod = PropertyListDecoder()
   do {
      let retrivdate = try Data(contentsOf: archiveurl)
      return try propetydicod.decode([Emoji].self, from: retrivdate)
   } catch {
     print(error)
     return [Emoji]()
   }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46549793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档