小编Hil*_*ell的帖子

有没有办法在通用应用程序中为不同的iOS设备指定不同的包显示名称?

我猜不是,但是我想爱错.我想在我的通用应用程序上使用捆绑显示名称,该应用程序在iPad和iPhone 4上显示效果很好,但在较旧的iPhone型号上显示太长(有省略号).我想在前两个平台上指定完整的包显示名称,然后在较旧的iPhone型号上指定一个较短的名称.有没有办法做到这一点?

iphone

5
推荐指数
2
解决办法
1621
查看次数

如何阻止Django中的级联删除?

我在Django应用程序中有三个模型类:

class Folder(models.Model):
  ...
  folder = models.ForeignKey('Folder',null=True,blank=True,related_name='folders')
  front_thumbnail_image = models.ForeignKey('Image',verbose_name='Front Thumbnail',null=True,blank=True,related_name='front_thumbnail_for_folders')
  middle_thumbnail_image = models.ForeignKey('Image',verbose_name='Middle Thumbnail',null=True,blank=True,related_name='middle_thumbnail_for_folders')
  back_thumbnail_image = models.ForeignKey('Image',verbose_name='Back Thumbnail',null=True,blank=True,related_name='back_thumbnail_for_folders')

class Image(models.Model):
  ...
  folder = models.ForeignKey(Folder,related_name='images',null=True)

class ImageRepresentation(models.Model):
  ...
  image = models.ForeignKey(Image, related_name="image_representations")
Run Code Online (Sandbox Code Playgroud)

鉴于这个模型,当我Image在管理站点中删除一个时,我会期望ImageRepresentation与之关联的s也Image被删除,并且Folder封闭的内容Image将被单独留下.

管理站点告诉我,封闭Folder也将被删除.我该怎么做才能获得理想的行为?我查看了删除级联规则,但我尝试的任何东西似乎都没有用.

编辑添加三个外键Folder(缩略图图像)...我完全忽略了那些(显然).诚实,没有其他关系.

python database django model

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

如何加速处理5000个独立任务的Mac应用程序?

我有一个长期运行(5-10小时)的Mac应用程序,可以处理5000个项目.通过执行多个转换(使用Saxon),运行一堆脚本(在Python和Racket中),收集数据,并将其序列化为一组XML文件,SQLite数据库和CoreData数据库来处理每个项目.每个项目完全独立于其他项目.

总之,它做了很多,需要很长时间,并且似乎是高度可并行化的.

在加载了需要处理它的所有项目后,该应用程序使用GCD来并行化工作,使用dispatch_apply:

dispatch_apply(numberOfItems, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^(size_t i) {
    @autoreleasepool {
        ...
    }
});
Run Code Online (Sandbox Code Playgroud)

我正在使用12核(24虚拟)的Mac Pro上运行该应用程序.所以我希望一直处理24件物品.但是,我通过记录发现正在处理的项目数量在8到24之间变化.这实际上是为运行时间增加了几个小时(假设它一次可以处理24个项目).

一方面,也许GCD真的非常聪明,它已经给了我最大的吞吐量.但是我很担心,因为很多工作都是在这个应用程序产生的脚本中发生的,也许GCD是从不完整的信息推断出来的,并没有做出最好的决定.

任何想法如何提高性能?正确性之后,第一个所需属性缩短了此应用程序运行所需的时间.我不关心功耗,占用Mac Pro或其他任何东西.

更新:实际上,这在文档中看起来很惊人:"在任何给定时刻并发队列执行的任务的实际数量是可变的,并且可以随着应用程序中的条件的变化而动态变化.许多因素会影响由执行的任务执行的任务数量.并发队列,包括可用内核的数量,其他进程正在完成的工作量,以及其他串行调度队列中任务的数量和优先级." (重点补充)看起来让其他进程正常工作会对应用程序中的调度产生负面影响.

能够只是说"同时运行这些块,每个核心一个,不要尝试更聪明地做任何事情",这真是太好了.

parallel-processing macos xcode objective-c grand-central-dispatch

4
推荐指数
1
解决办法
149
查看次数

当边界发生变化时,如何获得显示文本的UIView的UIView?

我有一个UIView,我需要在drawRect中绘制文本:

- (void)drawRect:(CGRect)rect {
    ...
    [@"some text" drawAtPoint:somePoint withFont:someFont];
    ...
}
Run Code Online (Sandbox Code Playgroud)

因为文本需要特殊的格式,我不能只使用UILabel.

在我旋转设备之前它看起来很好.然后我的自定义UIView的大小发生变化(在父视图的layoutSubviews方法中),文本在一个方向上被拉伸而在另一个方向上被压缩.

当我用UILabel替换我的视图时,即使视图的边界发生变化,文本也总是很好看.

如何让我的视图表现出与UILabel相同的行为?

我已经研究过的一些事情,但尚未取得成功:

  • 将视图图层的needsDisplayOnBoundsChange设置为YES.
  • 将视图的contentStretch设置为CGRectZero.
  • 在我视图的layoutSubviews中调用setNeedsDisplay.

也许我没有做正确的事情之一.有没有其他人遇到这个?

更新:根据James Huddleston的回答,我将contentMode视图的属性设置为UIViewContentModeRedraw,这让我成为了那里的一部分.现在,动画结束时文本显示正确.但是,在动画开始时,文本会被压缩/拉伸以适应最终尺寸,然后在动画过程中得到不合格/未拉伸.UILabel不是这种情况.

iphone uiview uilabel

3
推荐指数
1
解决办法
1164
查看次数

如何从NSInvocation获取NSString结果?

以下代码按预期工作:

NSLog(@"%@", [NSString stringWithString:@"test"]; // Logs "test"
Run Code Online (Sandbox Code Playgroud)

但当我用一个替换它时NSInvocation,我得到一个完全不同的结果:

Class class = [NSString class];
SEL selector = @selector(stringWithString:);

NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:
                          [class methodSignatureForSelector:selector]];
[invocation setTarget:class];
[invocation setSelector:selector];
[invocation setArgument:@"test" atIndex:2];
[invocation invoke];

id returnValue = nil;
[invocation getReturnValue:&returnValue];
NSLog(@"%@", returnValue); // Logs "NSCFString"
Run Code Online (Sandbox Code Playgroud)

我搜索过高低,但无法弄清楚这一点.有帮助吗?谢谢!

objective-c nsinvocation

3
推荐指数
1
解决办法
1141
查看次数

如何从 Python 列表中删除重复的字典(带有嵌套字典)?

我有一个包含嵌套字典的字典列表,如下所示:

v0 = [ { 'a': 1, 'b': { 'c': 3 } },
       { 'a': 1, 'b': { 'c': 3 }, 'd': 4 },
       { 'a': 1 },
       { 'a': 1, 'b': { 'c': 3 } } ]
Run Code Online (Sandbox Code Playgroud)

如何删除重复的列表元素,结果如下:

v1 = [ { 'a': 1, 'b': { 'c': 3 } },
       { 'a': 1, 'b': { 'c': 3 }, 'd': 4 },
       { 'a': 1 } ]
Run Code Online (Sandbox Code Playgroud)

我不关心顺序,我只想要所有元素的集合。我见过很多类似的问题,但答案仅适用于列表中的简单字典,不适用于嵌套字典。例如:

v1 = [dict(t) for t in set([tuple(d.items()) for d in v0])]
Run Code Online (Sandbox Code Playgroud)

如果字典没有嵌套,这将起作用,但因为它们是嵌套的,所以我收到错误“TypeError: …

python dictionary list set duplicates

3
推荐指数
1
解决办法
2452
查看次数

在UIWebView中垂直和水平居中HTML

我试图在UIWebView中垂直和水平地居中未知高度的内容.

我现在所拥有的在Safari中非常有用:

http://jsfiddle.net/HT9J5/

但是,在UIWebView中显示时看起来不正确:

在此输入图像描述

任何想法如何让这个工作?我不能做的一件事是设置视口元,因为当在iPad上的模态视图控制器中呈现UIWebView时,这需要工作,它不是屏幕的整个宽度:

<meta name="viewport" content="width=device-width;initial-scale=1.0;maximum-scale=1.0;"/>
Run Code Online (Sandbox Code Playgroud)

html css uiwebview ios

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

寻求一种算法来有效地布局日历事件横幅

我正在寻找一种算法来有效地放置全天/多日活动横幅,就像Outlook或Google日历中的月视图一样.我有许多具有开始和结束日期的事件,通过增加开始(然后结束)日期(或任何其他您喜欢的顺序,我从数据库表中收集事件)来排序.我想最大限度地减少用完的垂直空间的平均数量,因为在事件横幅之后我将需要在当天放置其他事件(这些事件总是在给定日期的横幅之后).所以,例如,如果我有两个事件,一个1/10-1/11和一个1/11-1/15,我宁愿像这样安排它们(每列是一天):

 bbbbb
aa
Run Code Online (Sandbox Code Playgroud)

而不是像:

aa
 bbbbb
Run Code Online (Sandbox Code Playgroud)

因为当我只为当天(x,y和z)添加事件时,我可以这样做(我更喜欢第一个,不想要第二个):

 bbbbb    vs.    aa
aa xyz            bbbbb
                    xyz
Run Code Online (Sandbox Code Playgroud)

但它并不像首先放置较长的事件那么简单,因为1/10-1/11,1/13-1/14和1/11-1/13,我希望:

aa cc
 bbb
Run Code Online (Sandbox Code Playgroud)

而不是:

 bbb
aa cc
Run Code Online (Sandbox Code Playgroud)

因为这会允许事件x和y:

aa cc    vs.     bbb
xbbby           aa cc
                x   y
Run Code Online (Sandbox Code Playgroud)

当然,我宁愿一次性做到这一点.对于数据结构,我目前正在使用从日期到列表的地图,对于事件的每一天,我将事件添加到相应的列表中.因此,为期三天的活动会出现在三个列表中,每个列表都在地图中的一天内.这是一个方便的结构,用于将结果转换为可视输出,但我也对其他数据结构开放.我目前正在使用贪婪算法,我只是按顺序添加每个事件,但这会产生不需要的伪像,如:

aa ccc          
 bbbbb
    dd
     eeeeeeeeeeeeeeeee
Run Code Online (Sandbox Code Playgroud)

这大多数"e"事件日都浪费了很多空间.

有任何想法吗?

algorithm calendar minimize

0
推荐指数
1
解决办法
3093
查看次数