作为Postgresql的新手(我正在移动,因为我正在将我的网站移动到只支持它的heroku,我不得不重构我的一些查询和代码.这是一个我无法理解这个问题的问题有:
PGError: ERROR: column "l_user_id" does not exist
LINE 1: ...t_id where l.user_id = 8 order by l2.geopoint_id, l_user_id ...
^
Run Code Online (Sandbox Code Playgroud)
...查询:
select distinct
l2.*,
l.user_id as l_user_id,
l.geopoint_id as l_geopoint_id
from locations l
left join locations l2 on l.geopoint_id = l2.geopoint_id
where l.user_id = 8
order by l2.geopoint_id, l_user_id = l2.user_id desc
Run Code Online (Sandbox Code Playgroud)
添加了"l.user_id为l_user_id,l.geopoint_id为l_geopoint_id"的子句,因为显然postgres不喜欢未选中字段的order子句.但是我现在得到的错误使它看起来像我也没有得到别名.任何有postgres经验的人都会看到问题吗?
我可能会遇到一堆这样的问题 - 查询在mySql中运行良好...
我不得不从rails app上的基于mySql的ruby迁移到使用postgresql.到目前为止没有问题,但我不知道如何解决它.
数据的迁移带来了id,而postgresql现在遇到了现有ID的问题:我不清楚它在哪里获得用于确定nextval基数的值:它肯定不是最高值专栏,虽然您可能认为这是一个好主意.无论如何,它现在与现有的id值发生冲突.从标准RoR迁移创建的id列定义为
not null default nextval('geopoints_id_seq'::regclass)
Run Code Online (Sandbox Code Playgroud)
是否有一些地方可以将其作为基础使用的价值入侵?这个问题现在可能出现在20个左右的表格中:我可以使用
'select max(id) from <table_name>'
Run Code Online (Sandbox Code Playgroud)
但这似乎使自动增量柱的想法毫无意义.
如何最好地处理?
处理从UISwitch设置派生的布尔值的最佳方法是什么,并存储在作为持久设置保存到用户目录的NSMutableDictionary中?具体来说,在文件系统中写入和读取的NSMutableDictionary中保持布尔值与数值不同的最佳方法是什么?
========
补充道:感谢Adrian和Ben.因此,结果是如果通过[NSNumber numberWithBool:]存储(这是我一直在做的),没有方便的方法来确定该值是否来自布尔值,是否正确?
第二部分是我存储的NSMutableDictionary最初是通过具有布尔值的plist创建的.这些值在第一次读入时具有类NSCFBoolean.现在我的策略是将我在字典中使用的值与plist中的相应条目进行比较.
重要的是我正在动态生成界面元素以允许用户操纵这些值,并且我将布尔值与UISwitch联系起来.如果我通过转换为数字而丢失原始类,则会得到不合适的用户界面元素.
我正在考虑将数组替换为存储值,其中第一个值是存储值,其余条目是选择:如果存在两个选项,则将其视为布尔值...在其他情况下,它们用作选择器值.但这似乎很麻烦,如果可靠的话.
任何想法欢迎......
在单个线程中使用NSNotifications时是否存在任何竞争条件问题?这是一个示例方法:
- (void) playerToggled: (NSNotification *) notification {
if (timerPane.playing && ! timerPane.paused) {
[playerPane toggleCurrentPlayer];
[timerPane toggleTimer];
[mainPane playerToggled];
}
Run Code Online (Sandbox Code Playgroud)
}
条件之后的前两个调用将触发mainPane将接收的NSNotifications.mainPane是否保证在这些通知之后收到playerToggled消息?我应该说这个代码似乎按照需要工作(playerToggled总是执行最后).但我不确定通知的时间问题是什么,我找不到具体的答案.
我有一个返回NSRange的方法.当我从类外部调用此方法时,我收到编译错误.
NSRange tmpRange;
tmpRange = [phrase rangeInString:searchString forString:theLetter goingForward:YES];
return tmpRange.location == -1;
Run Code Online (Sandbox Code Playgroud)
在.h文件中:
#import <Foundation/Foundation.h>
@interface Phrase : NSObject {
}
- (NSRange) rangeInString:(NSString *) tgt forString:(NSString *) find goingForward:(BOOL) fwd;
@end
Run Code Online (Sandbox Code Playgroud)
通过其他方法在Phrase对象中调用此方法没有问题.编译器说"赋值中的不兼容类型".
任何人都可以向我解释这个吗?我假设它与返回在对象外部生成的NSRange/struct类型值有关,但我不知道它为什么在一个地方而不是另一个地方工作.
iphone ×3
cocoa ×2
objective-c ×2
postgresql ×2
alias ×1
boolean ×1
cocoa-touch ×1
heroku ×1
macos ×1
mysql ×1
nextval ×1
nsnumber ×1
sql ×1