我猜不是,但是我想爱错.我想在我的通用应用程序上使用捆绑显示名称,该应用程序在iPad和iPhone 4上显示效果很好,但在较旧的iPhone型号上显示太长(有省略号).我想在前两个平台上指定完整的包显示名称,然后在较旧的iPhone型号上指定一个较短的名称.有没有办法做到这一点?
我在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(缩略图图像)...我完全忽略了那些(显然).诚实,没有其他关系.
我有一个长期运行(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
我有一个UIView,我需要在drawRect中绘制文本:
- (void)drawRect:(CGRect)rect {
...
[@"some text" drawAtPoint:somePoint withFont:someFont];
...
}
Run Code Online (Sandbox Code Playgroud)
因为文本需要特殊的格式,我不能只使用UILabel.
在我旋转设备之前它看起来很好.然后我的自定义UIView的大小发生变化(在父视图的layoutSubviews方法中),文本在一个方向上被拉伸而在另一个方向上被压缩.
当我用UILabel替换我的视图时,即使视图的边界发生变化,文本也总是很好看.
如何让我的视图表现出与UILabel相同的行为?
我已经研究过的一些事情,但尚未取得成功:
也许我没有做正确的事情之一.有没有其他人遇到这个?
更新:根据James Huddleston的回答,我将contentMode视图的属性设置为UIViewContentModeRedraw,这让我成为了那里的一部分.现在,动画结束时文本显示正确.但是,在动画开始时,文本会被压缩/拉伸以适应最终尺寸,然后在动画过程中得到不合格/未拉伸.UILabel不是这种情况.
以下代码按预期工作:
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)
我搜索过高低,但无法弄清楚这一点.有帮助吗?谢谢!
我有一个包含嵌套字典的字典列表,如下所示:
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: …
我试图在UIWebView中垂直和水平地居中未知高度的内容.
我现在所拥有的在Safari中非常有用:
但是,在UIWebView中显示时看起来不正确:

任何想法如何让这个工作?我不能做的一件事是设置视口元,因为当在iPad上的模态视图控制器中呈现UIWebView时,这需要工作,它不是屏幕的整个宽度:
<meta name="viewport" content="width=device-width;initial-scale=1.0;maximum-scale=1.0;"/>
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种算法来有效地放置全天/多日活动横幅,就像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"事件日都浪费了很多空间.
有任何想法吗?