我在android项目中使用ORMLite,我不想使用扩展活动,因为我在AsyncTask上将值插入数据库.
在文档中它说:
"如果你不希望延长OrmLiteBaseActivity与其他基类,那么你将需要复制它们的功能.你需要调用OpenHelperManager.getHelper(Context context, Class openHelperClass)你的代码的开始,保存帮手,当你想使用它了,然后调用OpenHelperManager.release()时你完成了它."
它还说要添加数据库助手类strings.xml,我有.所以我不确定我做错了什么.
我正在使用一个名为DataAccess我的数据层的类,如下所示:
public class DataAccess {
private Context context;
private DBHelper dbHelper;
public DataAccess(Context _context) {
this.context = _context;
dbHelper = getDBHelper(_context);
}
private DBHelper getDBHelper(Context context) {
if (dbHelper == null) {
dbHelper = (DBHelper) OpenHelperManager.getHelper(context, DBHelper.class);
}
return dbHelper;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用扩展的助手类:
public class DBHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "database.db";
private static final int DATABASE_VERSION …Run Code Online (Sandbox Code Playgroud) 当我到了2011年11月6日时,我似乎无法弄清楚为什么这一天不会发生变化.我所做的一切都在迭代.任何帮助,将不胜感激.这是我的代码:
NSCalendar* calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents* comp = [[NSDateComponents alloc] init];
[comp setDay:2];
[comp setMonth:11];
[comp setYear:2011];
NSDate* date = [calendar dateFromComponents:comp];
for (int i = 0; i < 7; i++) {
NSDate* d = [date dateByAddingTimeInterval:((3600 * 24) * i)];
NSDateComponents* dComponents = [calendar components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:d];
int day = [dComponents day];
NSLog(@"\nDate: %@\nDay: %i", [d description], day);
}
Run Code Online (Sandbox Code Playgroud)
这是我的输出:
Date: 2011-11-02 06:00:00 +0000
Day: 2
Date: 2011-11-03 06:00:00 +0000
Day: 3
Date: 2011-11-04 …Run Code Online (Sandbox Code Playgroud) 我正在尝试进行一些数字比较,我得到了一些奇怪的结果.
NSNumber* number1 = [NSNumber numberWithFloat:1.004];
NSNumber* number2 = [NSNumber numberWithDouble:1.004];
([number1 compare:number2] == NSOrderedSame) ? NSLog(@"YES") : NSLog(@"NO");
([number1 compare:number2] == NSOrderedAscending) ? NSLog(@"YES") : NSLog(@"NO");
([number1 doubleValue] == [number2 doubleValue]) ? NSLog(@"YES") : NSLog(@"NO");
([number1 floatValue] == [number2 floatValue]) ? NSLog(@"YES") : NSLog(@"NO");
Run Code Online (Sandbox Code Playgroud)
日志输出:
NO
YES
NO
YES
这对我来说非常令人沮丧.我知道这可能是因为浮点数与双精度数之间的差异.在我看来,它正在将双倍缩减到浮点数来进行比较.但如果我不知道如何创建数字,我该如何得到正确的结果呢?是否有不同的方法来比较NSNumber?
我似乎无法弄清楚这一点.我看了几个SO帖子(这里和这里),我的情况有点不同.
我不确定我是否必须注册一个新的TypeToken或什么.但我的JSON对象如下所示:
{
"id": 6,
"error": "0",
"dates": {
34234 : "2011-01-01" // I want to parse the date into a string.
87474 : "2011-08-09" // The first values are all unique.
. //this can be any number of entries.
.
.
74857 : "2011-09-22"
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了两个像这样的对象:
public class Response {
public Integer id;
public String error;
public DateList dates;
}
Run Code Online (Sandbox Code Playgroud)
单独的文件:
public class DateList {
public List<Map<Integer, String>> dateString;
}
Run Code Online (Sandbox Code Playgroud)
我不确定如何调整它以使其正确.文档似乎没有帮助...我见过的其他示例是解析自定义对象,而不是字符串类型.
谢谢!
我需要一种方法将CKQueryNotification连接到CKRecord或CKSubscription,这样我就可以在多种记录类型上接收更新/插入/删除.我成功收到CKNotifications,这是有效载荷:
{
ck = {
ce = 2;
cid = "<my cloud container id>";
nid = "<unknown guid>";
qry = {
dbs = 2;
fo = 1;
rid = "<the record id>";
sid = "<THIS IS THE SUBSCRIPTION ID>";
zid = "_defaultZone";
zoid = "_defaultOwner";
};
};
}
Run Code Online (Sandbox Code Playgroud)
我可以通过通知有效负载获取订阅ID,我可以将订阅ID绑定到知道记录类型的本地缓存,但我想使用CKFetchNotificationChangesOperation来检索未读通知,此时我只有一个CKQueryNotification对象.
CKQueryNotification对象只有一个CKRecordID,据我所知,我无法从CKRecordID获得CKRecord.我可以在我的容器中对我的所有CKRecord-> recordType执行查询,但这似乎不对.
任何帮助表示赞赏!