在对并发症进行了几天的处理之后,我有信心对于以规定间隔发生的更新的更新过程进行以下说明:
requestedUpdateDidBegin()
reloadTimelineForComplication 如果您需要重置所有数据.extendTimelineForComplication 如果您只需要在并发症时间轴的末尾添加新项目.requestedUpdateBudgetExhausted()而不是requestedUpdateDidBegin()如果您在当天花费了太多的并发症时间预算.这就是这个问题的原因.reloadTimelineForComplication,系统将调用getCurrentTimelineEntryForComplication(以及获取阵列的未来和过去变体,具体取决于您的时间旅行设置)extendTimelineForComplication说只会getTimelineEntriesForComplication(... afterDate date: NSDate ...)被调用.getNextRequestedUpdateDateWithHandler以便您指定复杂性需要新更新的时间.Apple的文档非常明确,您不应该经常询问更新,或者在复杂化代码中进行太多处理,否则您将耗尽时间预算,并且您的并发症将停止更新.所以,我的问题是:你在何时何地进行更新?
对于上下文,我的方案是一个URL,其返回数据每小时最多更改两次.
放置URL获取代码最明显的地方是func requestedUpdateDidBegin()获取数据,存储它,如果没有变化,只需返回.如果有更改,则延长或重新加载时间线.
但是,URL提取可能会很昂贵.备择方案:
WCSession,但如果用户关闭该应用程序,则更新将不再发生.还有其他地方吗?我可以在手表应用程序中使用不属于复杂功能的周期性功能吗?获取并发症更新数据的正确位置在哪里?
从iOS 6开始,展开的segue可用于向上导航场景层次结构.我试图决定将数据传递给父视图控制器的更清洁/更好/首选/更可维护的方法.从技术角度来看,有一些问题可以解决这个问题(例如"如果我有一个放松,我还需要一个代表")但我找不到太多可以解决利弊的问题.
选项1:使用代表.
选项2:使用展开segue
Exit并命名segue以便它可以与performSegueWithIdentifier:senderreturnFromSegueName(链接到该segue的用户命名方法)从子进程中获取数据.canPerformUnwindSegueAction:fromViewController:withSender
总的来说,代表们感觉更干净,但也许过时了.我倾向于朝那个方向倾斜吗?
我有一个视图控制器具有确定其行为的属性.这些是由其父母设定的prepareForSegue.
这在我的程序中引发的潜在错误是有问题的父母不能保证设置属性,所以我想有一个默认值.在研究方面,我现在明白Objective C中的属性没有默认值.这给我留下了以下选项:
viewDidLoad方法中设置属性的默认值.然而,在调查中,viewDidLoad被称为后 prepareForSegue父-所以当父母实际上并设置属性,我将覆盖父母的价值观.(id) init用来初始化值,但是,至少在使用故事板时,根本不会调用此方法!我可能有一个解决方法,对象将初始化为默认值,但在这种情况下,我想传入的所有内容都是BOOL.并且由于bool 即使没有正确初始化也会有一些价值,我无法测试它是否是非零的.
是否有机会prepareForSegue在父视图中初始化子视图控制器中的值?
我有一个在开发中完美运行的 Rails 应用程序。我已部署到服务器,应用程序加载并正确显示其登录页面和关于页面。但是,当我使用 Action Cable 转到页面时,服务器会阻止。从网页发出的最后一个请求与 Action Cable 相关,以及进一步的页面操作(表单提交,甚至重新加载)并且没有响应。
我已将它与服务器隔离,因为尝试从另一个浏览器加载站点的主页不起作用。关闭第一次向 Action Cable 发出请求的选项卡会立即加载另一个页面(并且突然处理来自第一页的所有待处理请求)。
我在 production.log 中没有看到任何错误,但这是导致挂起的部分:
I, [2018-01-24T21:12:38.601260 #9840] INFO -- : [86b3fcc1-cebd-4d70-99ff-b6f9f147bc00] Rendered collection of skill_checks/_skill_check.html.erb [5 times] (16.7ms)
I, [2018-01-24T21:12:38.601352 #9840] INFO -- : [86b3fcc1-cebd-4d70-99ff-b6f9f147bc00] Rendered rooms/show.html.erb within layouts/application (26.6ms)
I, [2018-01-24T21:12:38.602314 #9840] INFO -- : [86b3fcc1-cebd-4d70-99ff-b6f9f147bc00] Completed 200 OK in 32ms (Views: 26.7ms | ActiveRecord: 1.8ms)
I, [2018-01-24T21:12:38.740061 #9840] INFO -- : [5a06a7d8-a4a5-4ab4-8287-377dfa3447fe] Started GET "/cable" for 65.99.102.74 at 2018-01-24 21:12:38 +0000
I, [2018-01-24T21:12:38.740860 #9840] INFO -- …Run Code Online (Sandbox Code Playgroud) 我正在考虑将应用程序的部署迁移到 Heroku,并且我想在进行迁移之前确定它是否可以在基本计划上正确运行。基本计划将 Redis 限制为 20 个连接。
我根本不了解 Rails/Redis 连接架构。是否存在与 Actioncable 的单个连接(然后由该连接分发数据),还是每个实际客户端的连接(即每个浏览器选项卡都有一个连接)?
为了提高我的代码的可读性,我一直在为我的实体生成核心数据类,所以我可以使用getter和setter(我个人使用点符号)来访问它们而不是 setValue: forKey:
例如,而不是[aDateObject setValue:nameString forKey:@"name"];
我将使用:aDateObject.name = nameString;
我想知道是否有一个等效的方法将新的托管对象插入到托管对象上下文中.例如,我目前DateTimeFlightDataType使用以下内容创建一个新的:
aDateObject = (DateTimeFlightDataType*)[NSEntityDescription insertNewObjectForEntityForName:@"DateTimeFlightDataType"
inManagedObjectContext:self.managedObjectContext];
Run Code Online (Sandbox Code Playgroud)
有没有办法使用我的class(DateTimeFlightDataType)而不是实体字符串名称来创建和插入此对象以获得一致性?
ios ×4
actioncable ×2
objective-c ×2
segue ×2
clockkit ×1
core-data ×1
delegates ×1
properties ×1
redis ×1
watchkit ×1
watchos-2 ×1
xcode ×1