我有一个计时器,一旦它关闭就会运行以重启警报.
alarm = NSTimer.scheduledTimerWithTimeInterval(
60 * minutesConstant + secondsConstant,
target:self,
selector: Selector("endSession"),
userInfo: nil,
repeats:false)
Run Code Online (Sandbox Code Playgroud)
它的选择器函数设置一个模式标志,并调用原始函数,用新的分钟和秒常量设置警报,并发送会话已重新启动的用户通知.
我有一个菜单项,可以使用剩余时间进行更新

所以我一直打开它来检查我的闹钟确实重启,并且一旦它达到零就会显示通知.它可以工作,但是当我打开菜单并且它降到零时它只停留在0:00并且计时器不会触发,直到我点击菜单,此时它立即显示通知并重置计时器.
当菜单打开时,如何强制定时器触发?这不是什么大不了的事,但我不希望用户与会话混淆,如果他们看到计时器停机就会挂起.
所以这是我的情况,我有一个小应用程序可以跟踪你工作了多长时间,并让你知道什么时候休息。我有一个 NSTimer 每秒触发一次并更新一些数字(剩余时间)。该应用程序位于状态栏中,我希望剩余时间显示在状态菜单下拉菜单中的菜单项中。现在我将它更新到 NSMenuItem 并且它可以工作,但是当您单击菜单栏中的图标以获取菜单时,当您查看它时,时间不会动态更新。如果您更改焦点然后返回菜单,则时间保持正确,但同样,当菜单打开时,它不会更新。
无论如何,即使菜单快速打开,我也可以让 MenuItem 更新吗?还有其他几个具有客观 C 解决方案的线程,但我无法快速调整它们。
之间有什么区别
module Logging
def self.log
if @logger.nil?
@logger = Logger.new STDOUT
end
@logger
end
end
Run Code Online (Sandbox Code Playgroud)
和这个?
class Logging
def self.log
if @logger.nil?
@logger = Logger.new STDOUT
end
@logger
end
end
Run Code Online (Sandbox Code Playgroud)
他们似乎都在做同一件事。为什么我要选择一个?
我有一些格式化的列,我正在打印.我想使用以下变量来设置.format参数的长度
number_length = 5
name_length = 24
viewers_length = 9
Run Code Online (Sandbox Code Playgroud)
我有
print('{0:<5}{1:<24}{2:<9}'.format(' #','channel','viewers'), end = '')
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想要像
print('{0:<number_length}{1:<name_length}{2:<viewers_length}'.format(
' #','channel','viewers'), end = '')
Run Code Online (Sandbox Code Playgroud)
但这给了我一个无效的字符串格式化程序错误.
我在变量和括号之前尝试了%,但没有运气.
我正在尝试对一个 SFTP 帮助程序类进行单元测试,该类对 pysftp 模块进行一些调用。我想模拟来自 pysftp 的实际网络调用,因此没有副作用,只需确保该类使用正确的参数正确调用底层 SFTP 方法。
到目前为止,这是我的代码的一个简单示例:
import pysftp
import unittest
import mock
class SFTPHelper(object):
def __init__(self, host, username, password, files_dir):
self.host = host
self.username = username
self.password = password
self.files_dir = files_dir
def list_files(self):
with pysftp.Connection(
self.host,
username=self.username,
password=self.password) as sftp:
return sftp.listdir(self.files_dir)
class TestSFTPHelper(unittest.TestCase):
@mock.patch('pysftp.Connection')
def test_list_files(self, mock_connection):
sftp_helper = SFTPHelper('somehost', 'someuser', 'somepassword', '/some/files/dir')
sftp_helper.list_files()
# this assertion passes
mock_connection.assert_called_with(
'somehost', password='somepassword', username='someuser')
# this assertion does not pass
mock_connection.listdir.assert_called_with('/some/files/dir')
Run Code Online (Sandbox Code Playgroud)
断言错误:
AssertionError: Expected call: listdir('/some/files/dir') …Run Code Online (Sandbox Code Playgroud)