小编gle*_*enc的帖子

避免在Django ORM中对同一对象进行多次引用

我们有一个具有高度相关数据的应用程序,即很多情况下两个对象可能通过关系引用同一个对象.据我所知,如果你尝试通过一个不同的,以前没有评估的关系来获取它,Django不会尝试返回对已经获取的对象的引用.

例如:

class Customer( Model ):
    firstName = CharField( max_length = 64 )
    lastName = CharField( max_length = 64 )

class Order( Model ):
    customer = ForeignKey( Customer, related_name = "orders" )
Run Code Online (Sandbox Code Playgroud)

然后假设我们有一个客户在DB中有两个订单:

order1, order2 = Order.objects.all()
print order1.customer # (1) One DB fetch here
print order2.customer # (2) Another DB fetch here
print order1.customer == order2.customer # (3) True, because PKs match
print id( order1.customer ) == id( order2.customer ) # (4) False, not the same object
Run Code Online (Sandbox Code Playgroud)

当您具有高度相关的数据时,访问对象关系导致对DB重复查询相同数据的程度会增加并成为问题.

我们还为iOS编程,关于CoreData的一个好处是它维护 …

python django orm

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

检测UITextField文本因抖动撤消而改变的时间?

我有一个UITextFieldDelegate,它对用户输入进行了大量验证,以确定是否允许它们结束编辑.在一个特定示例中,将该字段留空是无效的.

现在我textField:shouldChangeCharactersInRange:replacementString:用来在用户每次编辑后验证文本输入.

问题是:如果用户清除字段(使用小'x'按钮),验证代码将进入"无效"模式,并阻止用户导航,直到他们输入有效文本.如果用户随后摇动手机以取回旧文本,shouldChangeCharactersInRange则不会再次调用,并且代理处于"无效"状态,而不是再次识别出一切正常.

不确定我是否正确使用它,但似乎内置的UITextFieldDelegate机器无法处理因撤消/重做而导致的文本更改.

在这种情况下,实现正确验证的最佳方法是什么?我真的需要继承UITextField才能实现motionEnded:withEvent:吗?看起来像UITextField中的编辑处理内容实际上应该与用户是否实际键入它或者由于撤消而发生的事情无关,所以如果我真的不得不走这条路线就会感到沮丧.

iphone uitextfield shake

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

在iPhone prefs/settings包中添加按钮?

只是想知道是否可以将Safari首选项中的"清除历史记录","清除Cookies"等按钮添加到您自己的应用程序设置包中?一直在挖掘开发文档,找不到按钮的任何plist说明符,所以我想知道这是否是苹果公司的内部API?

点击按钮后,您会看到一个操作表,询问您是否真的想要这样做,然后可能会根据用户的输入进行回调.

还注意到Nike + iPod设置中有一个清晰的按钮,但同样,该应用程序可能可以访问我们没有的内部API.

替代文字

iphone preferences plist

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

无法摆脱瞬态属性getter impls中的primitiveValue访问器的编译器警告

我在我的应用程序中的一个模型上实现了如下的瞬态属性.它在模型设计中声明为具有未定义类型的瞬态属性.

@property (nonatomic, readonly) NSNumberFormatter *currencyFmt;
Run Code Online (Sandbox Code Playgroud)

此访问器的当前(无警告)impl是:

- (NSNumberFormatter *) currencyFmt
{
    [self willAccessValueForKey:@"currencyFmt"];
    NSNumberFormatter *fmt = [self primitiveValueForKey:@"currencyFmt"];
    [self didAccessValueForKey:@"currencyFmt"];

    if (fmt == nil)
    {
        fmt = [[[NSNumberFormatter alloc] init] autorelease];
        [fmt setNumberStyle:NSNumberFormatterCurrencyStyle];
        [fmt setLocale:[self localeObject]];
        [self setPrimitiveValue:fmt forKey:@"currencyFmt"];
    }

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

调用primitiveValueForKey:是这里的问题,因为文档特别警告不要使用这个版本的原语查找:

强烈建议您使用动态生成的访问器而不是直接使用此方法(例如,primitiveName:而不是primitiveValueForKey:@"name").动态访问器更高效,并允许编译时检查.

问题是,如果我尝试使用primitiveCurrencyFmt而不是primitiveValueForKey:@"currencyFmt",我得到一个编译器警告说该对象可能不响应该选择器.如果我只是忽略这个警告,那么在运行时一切正常,但是警告很糟糕,而且我不想提交任何包含它们的代码.

我试着声明属性与@dynamic@synthesize在文件的顶部,似乎没有任何帮助.在不生成这些警告的情况下,我需要做什么才能使用推荐的动态访问器?

任何帮助非常感谢.

iphone core-data objective-c nsmanagedobject

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

将Grails + Hibernate应用程序扩展到单个计算机之外

我是Grails + Hibernate的新手,所以如果这是众所周知的事情,我很抱歉.

我正在做一些Grails应用程序的工作,它需要扩展得非常高,几乎肯定超出单个节点.它在PostgreSQL上使用Hibernate,我想知道多个Grails实例是否可以同时与同一个Hibernate/Postgres数据库进行通信(我的意思是相同的数据库,而不是相同的数据库服务器),或者每个Grails实例都需要它自己的数据库(很像两个基于CoreData的应用程序无法同时访问相同的CoreData数据库).

是否有任何内置于Hibernate中的东西可以同时用作多个正在运行的应用程序的数据存储区?我意识到这听起来有点像是一厢情愿的想法,但我只是想确认它在继续之前肯定不起作用.

如果有人对在单个实例之外扩展Grails应用程序的典型方法有什么建议,那将非常感激.

postgresql grails hibernate

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

动画正在进行时无法与UITableView交互

我正在尝试实现当用户点击我的一个tableview单元格时发生的动画.基本上,动画只是一个带有"+5"或"+1"等文字的小标签,然后在褪色的同时向上移动(基本上就像用户对它们进行评分时在视频游戏中出现的点).

tableView:didSelectRowAtIndexPath:我的控制器的实现中,我正在做以下(为了简单起见,这里解释):

CGRect toastFrame = /* figure out the frame from the cell frame here */;
UILabel *toast = [[UILabel alloc] initWithFrame:toastFrame];
toast.text = [NSString stringWithFormat:@"+%d", 5];
toast.backgroundColor = [UIColor clearColor];
toast.userInteractionEnabled = NO; // hoped this would work but it doesn't
[tableView addSubview:toast];

[UIView
 animateWithDuration:1.0
 animations:^
 {
     toast.alpha = 0.0;
     toast.transform = CGAffineTransformMakeTranslation( 0.0, -44.0 );
 }
 completion:^ (BOOL finished)
 {
     [toast removeFromSuperview];
 }];

[toast release];
Run Code Online (Sandbox Code Playgroud)

烤面包很好看,看起来很棒.问题是,在动画完成之前,tableview会停止接收触摸事件.这意味着在点击tableview中的单元格后一秒钟,您无法点击tableview中的任何其他单元格.

有没有办法阻止这种情况发生,并允许用户继续与tableview交互,好像动画根本没有发生?

在此先感谢您的帮助.

iphone animation uitableview

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