SWIFT 如何创建 NSCoding 子类并从另一个类调用它?

2023-11-29

我在 NSCoding 上发现了这段黑色代码,它几乎确实想要我想要的。我找到它的地方的链接如下。 如何在其他类中创建 NSCoding 类和用户?下面的代码不起作用。我希望有人能帮助我解决这个问题。

import Foundation
import UIKit


class User: NSObject, NSCoding {
    var name: String

    init(name: String) {
        self.name = name
    }

   required init(coder aDecoder: NSCoder) {

        self.name = aDecoder.decodeObjectForKey("name") as String
    }

    func encodeWithCoder(aCoder: NSCoder) {
        aCoder.encodeObject(name, forKey: "name")
    }
}


//new class where I want to set and get the object

class MyNewClass: UIViewController {

    let user = User(name: "Mike")
    let encodedUser = NSKeyedArchiver.archivedDataWithRootObject(user)
    let decodedUser = NSKeyedUnarchiver.unarchiveObjectWithData(encodedUser) as User

}

//http://stackoverflow.com/questions/24589933/nskeyedunarchiver-fails-to-decode-a-custom-object-in-swift

我正在从下面我自己的项目中剪切和粘贴。我将其限制为一个字符串参数来存储到文件中。但你可以有更多不同的类型。您可以将其粘贴到单个 swift 文件中,并将其用作 ViewController 以及添加的要测试的类。它演示了使用 NSCoding 和 swift 语法来保存和检索对象中的数据。

import UIKit
import Foundation

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        var instanceData = Data()
        instanceData.name = "testName"
        ArchiveData().saveData(nameData: instanceData)
        let retrievedData = ArchiveData().retrieveData() as Data
        println(retrievedData.name)

    }
}

class Data: NSObject {

    var name: String = ""

    func encodeWithCoder(aCoder: NSCoder!) {
        aCoder.encodeObject(name, forKey: "name")
    }

    init(coder aDecoder: NSCoder!) {
        name = aDecoder.decodeObjectForKey("name") as String
    }

    override init() {
    }
}

class ArchiveData:NSObject {

    var documentDirectories:NSArray = []
    var documentDirectory:String = ""
    var path:String = ""

    func saveData(#nameData: Data) {
        documentDirectories = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
        documentDirectory = documentDirectories.objectAtIndex(0) as String
        path = documentDirectory.stringByAppendingPathComponent("data.archive")

        if NSKeyedArchiver.archiveRootObject(nameData, toFile: path) {
            //println("Success writing to file!")
        } else {
            println("Unable to write to file!")
        }
    }

    func retrieveData() -> NSObject {
        var dataToRetrieve = Data()
        documentDirectories = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
        documentDirectory = documentDirectories.objectAtIndex(0) as String
        path = documentDirectory.stringByAppendingPathComponent("data.archive")
        if let dataToRetrieve2 = NSKeyedUnarchiver.unarchiveObjectWithFile(path) as? Data {
            dataToRetrieve = dataToRetrieve2 as Data
        }
        return(dataToRetrieve)
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SWIFT 如何创建 NSCoding 子类并从另一个类调用它? 的相关文章

  • iOS后台获取时间限制崩溃

    我已经设置了背景获取 使用大纲NSScreencast 第 92 集 http nsscreencast com episodes 92 background fetch BOOL application UIApplication app
  • Flutter-iOS 当应用程序更新/重新编译时存储的图像丢失

    嗨 请原谅我的英语 也是 flutter iOS 的新手 我在 iOS 上有一个关于 flutter 的应用程序 用户可以从他们的相机和图库中拍摄照片和视频 我正在使用 image picker 包 这没有问题 然后我将其保存在在其应用程序
  • iOS FacebookSDK + 解析 SDK + GoogleMaps SDK

    我搜索了很多 然后我意识到 ObjC标记那个GoogleMapSDK需要 但不能很好地配合ParseSDK and FacebookSDK 所以我阅读了所有的 stackoverflow 答案并尝试解决我的问题 问题还没有解决 我执行的步骤
  • Swift 语言中的 #ifdef 替换

    在 C C Objective C 中 您可以使用编译器预处理器定义宏 此外 您可以使用编译器预处理器包含 排除代码的某些部分 ifdef DEBUG Debug only code endif Swift 中有类似的解决方案吗 是的 你可
  • Swift Siesta 访问响应原始数据

    我的 API 中有一个返回 PDF 文件内容的方法 如何在成功回调中获取响应的原始数据 所有午睡响应均以原始数据开始 以基础类型的形式Data 然后运行变压器管道 http bustoutsolutions github io siesta
  • 如何在导航栏上添加 UIView?

    我需要覆盖UINavigationBar with UIView像这儿 除了使用带有按钮返回的自定义 UIView 作为导航栏之外 还有其他方法可以做到这一点吗 您可以将子视图添加到应用程序的基本视图 UIApplication share
  • iOS 上关键 ClientState 警告的默认访问速度缓慢

    在测试我的 iOS 应用程序时 我收到 对关键 ClientState 的默认访问速度慢 耗时 0 034635 秒 容差为 0 020000 警告 它似乎是间歇性发生的 我试图环顾四周看看它是关于什么的 但我并不完全确定 任何帮助表示赞赏
  • 在 macOS 上使用 Swift 3 从剪贴板读取

    我是 Swift 的初学者 我想弄清楚如何在 macOS Swift 3 上读取已复制到剪贴板的内容 我搜索了很多 但似乎找不到任何有效的东西 我从网上尝试过的一些事情 var pasteboardItems NSPasteboardIte
  • iPhone 的翻译器?

    我对为 iPhone 制作一个解释器很感兴趣 这将是一个实验性的想法 但可能会很棒 我喜欢让我自 己的语言适合移动计算和数学的想法 我查阅了很多资料 发现有关 iPhone 上的口译员的信息很复杂 苹果会允许什么 我见过这个应用程序 这是一
  • 在 Xcode 中查找未使用的文件

    我最近开始开发一个新应用程序 它基本上是我以前制作的应用程序的副本 但做了一些更改 为了制作这个新应用程序 我复制了旧应用程序并删除了一些不需要的内容 我想知道 有没有办法知道 Xcode 中正在使用哪些类文件 或者有什么关于如何查找未使用
  • gestureRecognizer shouldReceiveTouch 持续存在于已释放的视图中导致崩溃

    我有一个相当简单的 UITableView 它在堆栈上推送一个新视图 新视图有一个像这样初始化的gestureRecognizer synthesize swipeGestureLeft void viewDidLoad swipeGest
  • UIScrollView 与 UITabBarController 切断

    我有一个 UIScrollView 我将其放置在视图中 界面生成器文档 xib m h 但是 UIScrollView 的下半部分被剪切 并且由于我有一个 UITabBarController 而没有显示其下半部分 我在 appdelega
  • iOS绘图3D图形库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在搜索一个可以帮助我绘制 3D 图表的库 我想要类似的东西这一页 http www math uri edu bkaskosz fla
  • iOS 有 INTERNET 权限吗?

    我在 iOS 设备上的 flutter dio 包上遇到了一个奇怪的问题 我编写了一个向 url 发送 GET 请求的应用程序 Android 上一切正常 但 iOS 上的请求似乎无法通过 没有发生任何错误 什么也没有 我在 Android
  • 如何将设备上未保存的图片上传到dropbox帐户?(IOS)

    Dropbox RestClient 仅保存文件 所以我想先将图像保存在本地文件夹中 然后上传它 结果它保存了文件 但它已损坏 NSString localPath NSBundle mainBundle pathForResource I
  • 自动生成的 Swift 桥接标头中“找不到接口声明”

    我当前的项目包含 Swift 和 Objective C 代码 两种类型的源文件都使用另一种语言的代码 当我进行完全清理并重新编译时 几乎每个 Swift 类声明都出现错误Module Swift h 形式为 Cannot find int
  • iOS:如何创建核心数据库的备份副本?以及如何导出/导入该副本?

    我想为我的应用程序的用户提供创建核心数据数据库备份的可能性 特别是在他切换到新设备等情况下 我该怎么做呢 特别是如何重新导入该文件 我的意思是 假设他制作了数据库的备份副本 然后更改了大量内容并想要重置为以前保存的备份副本 我该怎么做呢 T
  • 如何在 SwiftUI 中延迟动画?

    我想为两个文本字段设置动画 第二个字段有延迟 但它不起作用 没有延迟 它们同时从位置 100 动画到 0 这是代码 State private var offset CGFloat 100 State private var offset2
  • 如何安全地重命名 iOS 分发配置文件?

    我几个小时前刚刚提交了我的第一个应用程序 现在处于 等待审核 状态 但我犯了一个错误 我已经命名了我的分配配置文件My Company Distribution Profile 我应该做的事情被命名为我的发行版配置文件My GAME Dis
  • 从应用程序内发送电子邮件中的图像和文本

    如何从我的应用程序内通过电子邮件发送图像和文本 表格数据形式 请大家帮忙并提出建议 谢谢 void sendMailWithImage UIImage image if MFMailComposeViewController canSend

随机推荐

  • Perl:如何使所需脚本中的变量在所需脚本中可用

    example out pl my our local global whatever var test require inside pm 里面 pm print var 我不想使用软件包 它超出了我的需求 谢谢 You are alwa
  • 对数组进行排序所需的最少操作数

    我正在尝试练习解决 Codeforces 中的问题 它通过将数组的元素移动到数组的开头或结尾来对数组进行排序 起初我认为它是最长的递增子序列 但在某些情况下它不起作用 例如 如果输入是 4 1 2 5 3 则 LIS 是 3 但问题的答案是
  • 如何在 C#.NET 中更改图像的像素颜色

    我正在Java中处理图像 我设计了超过100多个图像 png 格式 它们都是透明和黑色绘图 问题是 现在我被要求更改绘图的颜色 黑色 我在谷歌上搜索了许多代码 这些代码改变了图像的位图 像素 但我不猜测我必须做什么来匹配确切的像素 并在图像
  • 构建战争时删除插件视图(gsp)

    我们在 grails 应用程序中使用各种插件 如日志记录 spring security core ui acl 等 现在这些插件带有默认的 gsp 在每个插件的视图文件夹中 我想构建一个 WAR 而不包含任何插件的视图 因此 当战争现在构
  • ASP.NET 中的多选下拉列表

    asp net 是否存在任何好的带有复选框 webcontrol 的多选下拉列表 多谢 你可以使用System Web UI WebControls CheckBoxList控制或使用System Web UI WebControls Li
  • android 棒棒糖通知背景颜色

    是否可以更改 android lollipop 中通知的背景颜色 我注意到有些通知是白色的 有些是浅灰色的 有些是深灰色的 source gottabemobile com source sftcdn net 您可以看到音乐播放器通知具有深
  • 如何使用PyTorch计算偏导数?

    我想使用 PyTorch 获取输出和输入之间的偏导数 假设我有一个函数Y 5 x1 4 3 x2 3 7 x1 2 9 x2 5 然后我训练一个网络来替换这个函数 然后我使用 autograd 来计算dYdx1 dYdx2 net torc
  • 将 pandas 数据框中的所有行除以特定行

    我有一个 pandas 数据框 如下所示 Sample name C14 Cer mean C16 Cer mean C18 Cer mean C18 1 Cer mean 0 1 1 0 124749 0 285659 35 302029
  • EC2 启动时自动启动 docker-compose

    我有一个 Linux AMI 2 AWS 实例 其中包含一些通过 docker compose 编排的服务 并且我使用 docker compose up 或 docker compose start 命令来启动它们 现在我每天都会自动启动
  • 通过 ssh 包装命令:如何管理复杂的引号?

    我使用 HPC 集群 计算节点无法访问互联网 只能访问前端 所以我想包装所有需要访问互联网的命令 以便在正面执行它们 例如 对于 wget bin bash ssh frontal bin wget gt 工作正常 我必须包装这个 bq g
  • 生成所有可能的深度为 N 的树?

    我有几种不同类型的树节点 每个节点可能有 0 到 5 个子节点 我正在尝试找出一种算法来生成所有可能的深度 Here s a Python program I wrote up that I think does what you re a
  • ANTLR 词法分析器如何消除其规则的歧义(或者为什么我的解析器会产生“输入不匹配”错误)?

    Note 这是一个自答问题旨在为 ANTLR 用户最常犯的错误之一提供参考 当我测试这个非常简单的语法时 grammar KeyValues keyValueList keyValue keyValue key IDENTIFIER val
  • 如何在可能没有托管配置提供程序的应用程序中使用托管配置?

    我正在开发一个可在 2 个不同的 Android 环境 消费者和企业市场 中运行的应用程序 假设它是一个短信应用程序 需要管理十几个配置参数 第一个环境是未启用 Android Enterprise AfW 功能的标准 Android 设备
  • 在哪里可以找到 http url 方案 rfc

    在RFC3986中 它排除了RFC1738中定义各个URI方案的特定语法的部分 并且文档说这些部分将作为单独的文档进行更新 但我找不到它 任何人都可以告诉我在哪里可以找到更新的单独文档 我想写一个HTTP URL方案解析强文本 所以我需要引
  • 哪个 NuGet 包包含 System.Web.Routing?

    我想使用 NuGet 处理我的 Web 应用程序引用 哪个 NuGet 包包含 System Web Routing I ve 搜索了 NuGet 网站 它不在 NuGet 包中 在里面System Web程序集 NET Framework
  • Django 不会为新的应用程序模型创建新的 sqlite 表

    我对 Django 很陌生 我遇到了新模型 以及我制作的新应用程序 博客 的问题 配置模型和 makemigration 后 表 blog post 不存在 这是我所做的所有过程 我正在遵循官方教程 这是我的博客 models py fro
  • JQuery - 删除具有特定类的类子元素[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 如果我有这个 html div class parent div class child div div class blackSheep div div class child di
  • Delphi中将字符串分割成固定长度部分的快速方法

    我需要将一个字符串拆分为具有固定长度子字符串的 TStringList 目前我使用 procedure StrToStringList ASource string AList TStrings AFixedLen Integer begi
  • Python隐藏控制台窗口

    我创建了一个小的 Python 应用程序 我希望它在进程中间隐藏控制台窗口 因此将其重命名为 pyw 并不能解决问题 最好有某种功能来最小化窗口 有什么想法吗 在 Windows 上您可以使用win32api from win32 impo
  • SWIFT 如何创建 NSCoding 子类并从另一个类调用它?

    我在 NSCoding 上发现了这段黑色代码 它几乎确实想要我想要的 我找到它的地方的链接如下 如何在其他类中创建 NSCoding 类和用户 下面的代码不起作用 我希望有人能帮助我解决这个问题 import Foundation impo