在整个 ios 应用程序中共享字符串和变量

2024-02-23

我正在为班级的最终项目制作一个应用程序,我需要在应用程序的不同视图中共享字符串、整数和浮点数。我必须创建一个供服务员在工作中使用的应用程序。我需要针对不同类型的订购商品(饮料、开胃菜、主菜等)使用不同的视图,并且需要将所选的商品、价格和数量保留在不同的视图中,以保持每个视图中可用的运行总计(每种类型的商品都有一个视图),最后是一个显示所订购商品和总计的逐项列表的视图。

据我了解,我不想使用选项卡栏应用程序布局,因为通常用户不希望不同选项卡式视图之间的信息相同,因此我正在考虑为此使用分段控制器。要获取视图之间共享的字符串、整数和浮点数,可以在 AppDelegate 中声明它们吗?我读过我可以使用单例,但我们没有在我的课程中介绍这一点,所以我认为这可能会增加比我需要的更多的复杂性。如果我要在 AppDelegate 中声明它们,我必须在AppDelegateViewController.m让它们始终可用?我无法想象我必须为每个不同的 ViewController 合成它们。或者会NSUserDefaults适合这种情况吗?

如果我在 AppDelegate 中声明了一个实例变量,那么它实际上会成为一个全局变量吗?我知道这违反了封装实践,但这不会对这个应用程序产生太大影响,它不会出现在 App Store 中,考虑到这将是一个相对较小的应用程序,开销应该不会产生太大影响。

预先感谢大家。如果期末考试还临近的话,祝你好运!


Edit


我想我应该说这将是一个糟糕的应用程序,我们没有涵盖很多更高级的主题,例如 iOS 的 MVC 范例,所以我能做的事情非常有限与我们应该做的事情相比。愚蠢的课程,我很后悔报名参加了它,因为我真的可以自己去做这件事并更好地了解 Objective-C(我们没有学到任何东西),并更好地了解 iOS 框架。

基本上,如果我在中声明变量AppDelegate,即使这是一个失礼行为,这是否可以从不同的视图访问字符串等?或者会NSUserDefaults在这种情况下有更好的解决方案吗?我倾向于 NSUserDefaults 并在项目中声明它们ViewController.


典型的 Objective C MVC 解决方案是将所有相关的共享字符串和变量作为属性放入 Model 对象(为此对象创建一个新类)。然后与需要访问这些变量或字符串的所有控制器共享该模型对象。

使用 AppDelegate 作为模型对象是“过度共享”,并且会使应用程序委托与非委托相关的内容变得混乱。一个稍微简洁的解决方案是让应用程序委托持有一个在整个应用程序中广泛使用的 Model 对象的 getter。可能导致代码重用问题且被认为政治不正确的解决方案是将模型对象和/或共享变量本身分配给 C 全局变量(请小心保留)。 (但是,如果您关心这些事情,这通常会生成最快且数量最少的代码。)

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

在整个 ios 应用程序中共享字符串和变量 的相关文章

随机推荐

  • 连接两个 numpy 矩阵

    如果你有两个 numpy 矩阵 如何将它们连接在一起 它们应该水平连接 以便 0 1 0 1 1 0 1 0 4 1 4 1 0 1 0 1 例如 对于这些矩阵 gt gt type X gt gt type Y gt gt X shape
  • Swift 可以将类/结构数据转换为字典吗?

    例如 class Test var name String var age Int var height Double func convertToDict gt String AnyObject let test Test test na
  • React 使表格可点击并编辑详细信息

    如何使表格行可单击以编辑和更新详细信息 我正在从 pouchdb 检索这些详细信息 我将部分代码粘贴到下面以供您评估 this state docs this db this props db componentDidMount this
  • 计算图像中圆心的坐标

    假设我有这张图像 我想得到 X Y 中每个圆的中心 MatLab 有没有算法可以做到这一点 只需拨打一次电话即可实现区域属性 http www mathworks nl help images ref regionprops html im
  • Django:检查模板中ManyToMany字段的值

    我的 Django 应用程序中有以下模型 class Group models model name models CharField max length 30 users Models ManyToManyField User 在我的模
  • 是否可以阻止远程脚本在 iframe 内加载?

    我正在动态创建 iframe 并且我想阻止不是源自 iframe 来源的脚本 这可能吗 通过 JavaScript jQuery 例如 如果我的页面加载 iframeexample com内容 我想要example com要运行的脚本 但我
  • 关于函数声明中的函数指针

    include
  • 以不同(非 root)用户身份从 PHP 运行 shell 脚本

    我正在尝试在 Ubuntu 服务器上从 PHP 运行非特权用户拥有的 shell 脚本 权限问题使得运行它exec 不切实际 因为它是www data正在运行它 我用谷歌搜索了一下 发现对 suExec 的各种引用 对于这么小的问题来说 这
  • 测试 Selenium 的 onbeforeunload 事件

    我正在尝试为网页编写一个 Selenium 测试 该测试使用 onbeforeunload 事件在离开之前提示用户 Selenium 似乎无法识别出现的确认对话框 或者提供点击 确定 或 取消 的方法 有什么办法可以做到这一点吗 我正在使用
  • 最重要的常量和右值引用

    在 C 03 中 您可以使用const 将临时变量的生命周期延长到引用的生命周期的技巧 或 最重要的常量 我的问题是 在 C 0x 中 这种行为是否扩展到右值引用 IEauto x someFunction 根据 class tempora
  • 有没有办法强制 Google Speech api 仅返回单词作为响应?

    我正在使用谷歌这个API language code key 我的密钥 用于语音识别 并且效果非常好 问题在于数字 即如果我说one two three four结果将是1234如果我说one thousand two hundred th
  • ARKit:如何通过 hitTest 命中 SCNNode?

    我有几架飞机被 ARKit 检测到并对用户可见 我希望用户能够单击屏幕 以便仅保留他选择的平面 更改其颜色并删除其他平面 我的飞机被添加到 didAddNode 委托方法中 如下所示 Plane plane Plane alloc init
  • Scala 中的集合和 toArray

    Java代码 Collection
  • 从特定客户端 UDP 捕获数据包 (Python)

    我有一个关于嗅探来自特定客户端的数据包的问题 我正在运行一个非常简单的 UDP 服务器 如下所示 from socket import IPv4 Port 54345 ServerSock socket AF INET SOCK DGRAM
  • AngularJs - 从指令调用控制器函数

    在 angularjs 项目中 我使用指令通过将文件拖放到拖放区来上传文件 在指令中 我需要调用控制器中定义的函数 这是我正在做的事情 function use strict angular module app controller my
  • 复制时如何使用 NSFileManager 覆盖文件?

    我正在使用此方法来复制文件 fileManager copyItemAtPath sourcePath toPath targetPath error error 我想覆盖已经存在的文件 此方法的默认行为是引发异常 错误 文件存在 当文件存
  • 从字典中读取可能存在或可能不存在的值的线程安全方法

    所以 我已经被 ConcurrentDictionary 宠坏了 它太棒了TryGetValue方法 但是 我只能使用常规词典 因为它位于针对手机和其他平台的可移植类库中 我正在尝试编写字典的一个非常有限的子集并以线程安全的方式公开它 我基
  • 在react js Material-ui中删除芯片

    我使用react js和Material ui芯片 我添加了很多芯片 然后一个芯片与文本一起出现 我想要有删除芯片的功能 但我不知道如何删除它 我怎样才能删除它onDelete 这只是我的代码的一部分 import React useEff
  • 基于适用于所有派生策略的基本策略获取模板类专业化

    我有一些源自基本策略的策略 某些类专门用于派生策略 而其他类仅专门用于基本策略并且可以与所有派生策略一起使用 我遇到的问题是代码重复太多 主要是类本身的构造函数和一些样板代码 下面的代码可以更好地解释我的意思 struct BasePoli
  • 在整个 ios 应用程序中共享字符串和变量

    我正在为班级的最终项目制作一个应用程序 我需要在应用程序的不同视图中共享字符串 整数和浮点数 我必须创建一个供服务员在工作中使用的应用程序 我需要针对不同类型的订购商品 饮料 开胃菜 主菜等 使用不同的视图 并且需要将所选的商品 价格和数量