小编sap*_*api的帖子

你能通过故事板向导航栏添加按钮吗?

目前,我一直在添加如下导航按钮:

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Add"
                                                                          style:self.editButtonItem.style 
                                                                         target:self
                                                                         action:@selector(doneButtonPressed)];
Run Code Online (Sandbox Code Playgroud)

不通过故事板添加它们似乎有点傻,但我找不到这样做的方法.有没有我错过的?

ios

55
推荐指数
2
解决办法
4万
查看次数

散列为numpy数组的最有效属性

我需要能够存储numpy array一个dict用于缓存的目的.哈希速度很重要.

array代表indicies,所以在对象的真实身份并不重要,值.可变性不是一个问题,因为我只对当前价值感兴趣.

我应该散列什么才能将其存储在一个dict

我目前的方法是使用str(arr.data),这比md5我的测试更快.


我已经从答案中加入了一些例子来了解相对时间:

In [121]: %timeit hash(str(y))
10000 loops, best of 3: 68.7 us per loop

In [122]: %timeit hash(y.tostring())
1000000 loops, best of 3: 383 ns per loop

In [123]: %timeit hash(str(y.data))
1000000 loops, best of 3: 543 ns per loop

In [124]: %timeit y.flags.writeable = False ; hash(y.data)
1000000 loops, best of 3: 1.15 us per loop

In [125]: %timeit hash((b*y).sum())
100000 loops, …
Run Code Online (Sandbox Code Playgroud)

python numpy

51
推荐指数
4
解决办法
4万
查看次数

dequeued UITableViewCell具有不正确的布局,直到滚动(使用autolayout)

我有一个自定义UITableViewCell子类,它在Interface Builder中应用了autolayout约束.单元格包含多个视图,包括a UITextField.

相关地,受UITextField约束的大小使得它与下一个视图之间存在默认的水平间距.

该单元格实例化如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"ProgressCell";
    ProgressCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier
                                                     forIndexPath:indexPath]

    cell.textField.text = @"Some string that is different for each cell";

    return cell;
}
Run Code Online (Sandbox Code Playgroud)

当单元格首次出现时,UITextField超出正确的框架,并显示在UIView其右侧后面.但是,当我将屏幕上的单元格滚动,暂停,然后向后滚动时,文本会被正确截断.

下面显示了一个示例(在第二次编辑时).

我已经尝试过调用[cell setNeedsLayout][cell setNeedsDisplay]进入单元格cellForRowAtIndexPath,以及延迟后执行它们.两者都没有效果.

什么是滚动屏幕执行该操作导致单元格正确显示,我该如何复制或修复底层问题?

编辑:

调用

[self.tableView reloadData];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];
Run Code Online (Sandbox Code Playgroud)

为了重新加载单元格,似乎导致布局第一次正确显示.

但是,它现在在滚动时(偶尔)中断(即,当向上滚动时,布局约束现在未正确应用).

调用[cell setNeedsLayout]cellForRowAtIndexPath似乎没有解决这个问题.

EDIT2:

顶部电池,如图所示这里,似乎正确(如底部电池一样),直到我向下滚动屏幕.它消失了.

这反映了第一次编辑时的问题 …

iphone objective-c interface-builder ios

21
推荐指数
2
解决办法
9095
查看次数

如何通过将assertSequenceEqual应用于值来实现assertDictEqual

我知道,在assertEqual字典上执行时,会assertDictEqual被调用.同样,assertEqual序列将执行assertSequenceEqual.

但是,在assertDictEqual比较值时,似乎没有使用assertEqual,因此assertSequenceEqual不会被调用.

请考虑以下简单的词典:

lst1 = [1, 2]
lst2 = [2, 1]

d1 = {'key': lst1}
d2 = {'key': lst2}

self.assertEqual(lst1, lst2) # True
self.assertEqual(d1, d2) # False ><
Run Code Online (Sandbox Code Playgroud)

我如何通过递归地将类似语义应用于值来测试诸如d1d2正确比较它们的相等的字典assertEqual

我想尽可能避免使用外部模块(如本问题所示),除非它们是本机django扩展.


编辑

基本上,我所追求的是这个的内置版本:

def assertDictEqualUnorderedValues(self, d1, d2):
    for k,v1 in d1.iteritems():
        if k not in d2:
            self.fail('Key %s missing in %s'%(k, d2))

        v2 = d2[k]

        if isinstance(v1, Collections.iterable) and …
Run Code Online (Sandbox Code Playgroud)

python unit-testing python-unittest

18
推荐指数
2
解决办法
3万
查看次数

如何跨外键验证唯一性约束(django)

我有以下(简化)数据结构:

Site
-> Zone
   -> Room
      -> name
Run Code Online (Sandbox Code Playgroud)

我希望每个房间的名称对于每个网站都是唯一的.

我知道,如果我只想要每个区域的唯一性,我可以这样做:

class Room(models.Model):
    zone = models.ForeignKey(Zone)
    name = models.CharField(max_length=255) 

    class Meta:
        unique_together = ('name', 'zone')
Run Code Online (Sandbox Code Playgroud)

但我不能做我真正想要的,这是:

class Room(models.Model):
    zone = models.ForeignKey(Zone)
    name = models.CharField(max_length=255) 

    class Meta:
        unique_together = ('name', 'zone__site')
Run Code Online (Sandbox Code Playgroud)

我尝试添加validate_unique方法,如此问题所示:

class Room(models.Model):
    zone = models.ForeignKey(Zone)
    name = models.CharField(max_length=255) 

    def validate_unique(self, exclude=None):
        qs = Room.objects.filter(name=self.name)
        if qs.filter(zone__site=self.zone__site).exists():
            raise ValidationError('Name must be unique per site')

        models.Model.validate_unique(self, exclude=exclude)
Run Code Online (Sandbox Code Playgroud)

但我必须误解validate_unique的要点/实现,因为当我保存Room对象时它没有被调用.

实施此检查的正确方法是什么?

python django django-models

17
推荐指数
3
解决办法
9369
查看次数

如何在Xcode 6中设计时自定义字体?

在WWDC 2014视频中解释说,您可以直接在Storyboard中设计自定义字体,但到目前为止我只看到iOS字体列表.有帮助吗?

interface-builder ios xcode6

14
推荐指数
1
解决办法
1万
查看次数

从上下文管理器中收益是一种好的做法吗?

我最近编写了一个返回一系列打开文件的方法; 换句话说,这样的事情:

# this is very much simplified, of course
# the actual code returns file-like objects, not necessarily files
def _iterdir(self, *path):
    dr = os.path.join(*path)
    paths = imap(lambda fn: os.path.join(dr, fn), os.listdir(dr))

    return imap(open, paths)
Run Code Online (Sandbox Code Playgroud)

从语法上讲,如果我执行以下操作,我希望必须关闭生成的对象:

for f in _iterdir('/', 'usr'):
    make_unicorns_from(f)
    # ! f.close()
Run Code Online (Sandbox Code Playgroud)

结果,我决定包装_iterdir一个上下文管理器:

def iterdir(self, *path):
    it = self._iterdir(*path)

    while 1:
        with it.next() as f:
            yield f
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常.

我感兴趣的是这样做是否是好习惯.我是否会遇到这种模式之后的任何问题(可能会抛出异常)?

python generator contextmanager

14
推荐指数
2
解决办法
2795
查看次数

为什么在函数中丢弃volatile限定符会调用警告?

(在我开始:我知道有存在的 问题在这个题目,但没有我发现答案,为什么这是一个问题,我经常这样做,并想知道如果我创造潜在的问题.)

我很好奇为什么在函数调用中丢弃volatile限定符需要编译器警告.

情况如下:

volatile uint8_t thingy;
void awesome_function(uint8_t *arg);

awesome_function(&thingy); << warning
Run Code Online (Sandbox Code Playgroud)

现在,我的理解是volatile限定符将变量标记为可能在编译器控件之外的方式发生变化的变量.因此禁用某些优化(最重要的是,根据我的经验,删除'未使用的'变量).

但是,如果我将变量标记为volatile,我担心在此范围内阻止优化.如果我将变量传递给函数,我通常很乐意在该函数中应用标准优化.*

即使编译器想要从函数中删除变量(我通常试图避免的优化),即使它这样做,也不会影响我在此范围内使用它; (函数的结果)函数本身就是我感兴趣的序列点(和左值).

那么,为什么放弃关于函数的限定符会调用警告,因为它不会在当前范围内启用重新排序?这是因为在被调用函数的范围内可能重新排序,这是不允许的volatile变量?如果是这样,为什么这是当前范围的问题?

(*这通常是因为这样的调用用于启动异步操作,最终将对传递给函数的指针进行操作.该函数可以使用指针执行任何操作,只要它最终根据请求更新它.volatile限定符在那里提醒编译器本地变量将异步更改.)

c warnings volatile

11
推荐指数
1
解决办法
2万
查看次数

这个python语法发生了什么?(c == c in s)

有人向我展示了这个奇怪的python语法示例.为什么[4]有效?

我原以为它要评估[5]或[6],两者都不起作用.是否有一些不成熟的过早优化?

In [1]: s = 'abcd'

In [2]: c = 'b'

In [3]: c in s
 Out[3]: True

In [4]: c == c in s
Out[4]: True

In [5]: True in s
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-e00149345694> in <module>()
----> 1 True in s

TypeError: 'in <string>' requires string as left operand, not bool

In [6]: c == True
Out[6]: False
Run Code Online (Sandbox Code Playgroud)

python python-2.7

10
推荐指数
1
解决办法
117
查看次数

如何抑制vim-latex中的警告?

我想在vim-latex中隐藏一些有问题的警告,但我似乎无法弄清楚语法.

我目前有:

let g:tex_IgnoredWarnings = 
    \'Underfull'."\n".
    \'Overfull'."\n".
    \'specifier changed to'."\n".
    \'You have requested'."\n".
    \'Missing number, treated as zero.'."\n".
    \'There were undefined references'."\n".
    \'Citation %.%# undefined'."\n".
    \'Double space found.'."\n"
let g:Tex_IgnoreLevel = 8
Run Code Online (Sandbox Code Playgroud)

对我来说,根据文档看起来是正确,但仍然出现"发现双重空间"警告(澄清,"仍然出现"我的意思是它在屏幕的左侧突出显示S>).

有任何想法吗?

vim latex

10
推荐指数
1
解决办法
3184
查看次数