MacDev 板


LINE

※ 引述《mick99988 (高雄人)》之铭言: : 原本是写C#刚跳过来写Swift : 遇到一些疑问比如说 : 在C#我可以宣告一个静态类别 : public static class csGlobal : { : public static int i = 0; : } : 比如在程式内我会存取一个静态类别内的共用变数好了 : 这样在其他不同页面我也能去检查这变数状态,csGlobal.i == 1 blabla来做後续逻辑 : 。 : 但在Swift可以这样用吗?还是有另外写法呢? 你可以写一个singleton物件来存取这个状态, 以swift来说大概会长得像: class MyStateController { private init() { //your initialization } static let shared = MyStateController() } 或者你可以存在一个内建的singleton物件: AppDelegate。 (事实上被做成singleton的是UIApplication) (另外关於这样存是看习惯,有些人是不建议这样存) 假设你在你的AppDelegate类别宣告一个状态变数 eg. var isLoggedIn: Bool = false 你可以透过这样的方式在其它地方存取它: func login() { // do your login // ... let app = UIApplication.shared // UIApplication's singleton object let appDelegate = app.delegate! as! AppDelegate // force unwrapp and cast is safe, generally appDelegate.isLoggedIn = true //user logged in // or just call: (UIApplication.shared.delegate! as! AppDelegate) = true } 关於singleton在swift的宣告方式可以参考: https://krakendev.io/blog/the-right-way-to-write-a-singleton : 就是在"不同的Controller之间都能共用变数"或是静态类别的写法 : 有像C# 宣告public static class Golbal{...}写法? : 因最近有Firebase相关的存取问题 : EX: : 我的主进入点是Tab bar Controller,下方有两个分页 : 然後我在主页面内有FIRAuth.auth()?.addStateDidChangeListener()监听器去判断是否 : 登入,假如有登入了我会在主页面user = FIRUser表示有人资料。 : 然後下面是我想问的 : 我在第二分页的TableViewController的Cell上会写类似一般APP都会有的"登出"按钮, : 但问题就在这边,我在另一个分页的Controller,又如何得知到主页面上变数user的资讯 : ...? 上面的说明应该回答了这个问题 : 才能用这段 : if user != nil : { : try! FIRAuth.ayth()!.signout() : user = nil : } : 最後偷渡问一下 : AppDelegate.swift 这页面大多功用是在做什麽的阿? : 我本来依名字以为是所有委托都写在这边 但好像不是? 事实上AppDelegate继承自UIApplicationDelegate, 顾名思义就是你的整个应用程式的delegate。 也就是当某些应用程式级别的事情发生的时候,让你有些机会做些处置。 更多细节建议参考苹果的官方文件: https://developer.apple.com/reference/uikit/uiapplicationdelegate --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.230.73.61
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1495880623.A.FA2.html ※ 编辑: bigbearlazir (36.230.73.61), 05/27/2017 18:24:34
1F:推 tentenlee: 这是用object-c的概念去做的吧 swift 用struct就好了 05/28 00:35
2F:推 Blueshiva: 这跟用Class还是Struct无关,单纯是要不要设定为static 05/28 17:31
3F:→ Blueshiva: 如果单纯的get/set value,那直接设定为某个class或 05/28 17:31
4F:→ Blueshiva: struct的static var,如果有其他需求,那就作成 05/28 17:32
5F:→ Blueshiva: singleton再去存取 05/28 17:32
6F:推 mick99988: 嗯...我再做做看 06/01 12:03
7F:→ mick99988: singleton 目前有看没有懂XDD 06/01 12:04
8F:推 denkeni: 一楼应该只是想表达 Swift 一向推荐优先用 value type 06/01 21:54
9F:→ yuanruo: Singleton用struct写? 那就不是全局唯一实例了 06/01 22:33
10F:推 Blueshiva: 用Static Struct Function搭配variable,其实可以做到 06/03 00:38







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP