有没有人知道如何在使用FMDB时返回查询计数?如果我执行Query @"selecttable(*)from sometable是......"我得到一个空的FMResultSet.如何获取查询的行数?我是否需要执行诸如"select*from sometable where .."之类的查询并迭代结果集?或者我可以使用useCount或最好的方式(在性能方面)做到这一点?
谢谢!
希亚斯
我有这个界面:
typedef void (^RMIteratorCompletionBlock) (void);
@interface RMAsyncIterator<__covariant T> : NSObject
+(RMAsyncIterator<T>*) iteratorWithArray:(NSArray<T>*) array;
-(id) init NS_UNAVAILABLE;
-(id) initWithArray:(NSArray*) array NS_DESIGNATED_INITIALIZER;
-(void) iterateWithWorkerBlock:(void (^) (T object, RMAsyncIterator<T>* iterator)) block withCompletionBlock:(RMIteratorCompletionBlock) completionBlock;
-(void) advance;
-(void) complete;
@end
Run Code Online (Sandbox Code Playgroud)
现在,当我使用这种实现方法时:
-(void) iterateWithWorkerBlock:(void (^) (id object, RMAsyncIterator* iterator)) block withCompletionBlock:(RMIteratorCompletionBlock) completionBlock {
Run Code Online (Sandbox Code Playgroud)
我正确地在iterateWithWorkerBlock:withCompletionBlock的实现中收到有关参数类型冲突的编译器警告:
问题是..你到底该怎么写这种实现方法?我尝试了各种不同的实现,将类型移出typedef失败,因为该类型在接口范围之外不可见,在实现中使用T作为类型失败,因为显然,该实现知道有关其自身接口类型的nada,就像是
-(void) iterateWithWorkerBlock:(void (^) (<__covariant T> object, RMAsyncIterator* iterator)) block withCompletionBlock:(RMIteratorCompletionBlock) completionBlock {
Run Code Online (Sandbox Code Playgroud)
失败了,我真的不知道如何正确实现此方法。现在,我仅使用id即可向我发出警告,但我想摆脱该警告...
布勒?任何人?谢谢
我试图解决这个问题,但我似乎无法找到解决方案.我有一个表创建为:
[db executeUpdate:@"CREATE TABLE 'MEDIA' (identifier INTEGER PRIMARY KEY AUTOINCREMENT, taskIdentifier INTEGER, type INTEGER, data BLOB)"]
Run Code Online (Sandbox Code Playgroud)
我该如何在此表中插入记录?我试过这个:
[db executeUpdate:@"INSERT INTO 'MEDIA' VALUES($next_id,?,?,?)" withArgumentsInArray:arguments];
Run Code Online (Sandbox Code Playgroud)
而参数是一个有4个值的NSArray,第一个是虚拟值(因为它应该自动增量),但无济于事.这应该如何与FMDB一起使用?
目前,我们正在将代码库从iText 2.1.7移植到iText 5.5.0(是的,我知道..我们花了一点时间;-)。好吧..“现在” copyAcroForm已经取代了Dodo,我正在努力寻找该代码的替代方案:
File outputFile = new File...
Document document = new Document();
FileOutputStream fos = new FileOutputStream(outputFile);
PdfCopy subjobWriter = new PdfCopy(document, fos);
document.open();
PdfReader reader = new PdfReader(generationReader);
for (int i=1; i<=reader.getNumberOfPages(); i++) {
PdfImportedPage page = subjobWriter.getImportedPage(reader, i);
subjobWriter.addPage(page);
}
PRAcroForm form = reader.getAcroForm();
if (form != null)
subjobWriter.copyAcroForm(reader);
subjobWriter.freeReader(reader);
reader.close();
subjobWriter.close();
document.close();
fos.close();
Run Code Online (Sandbox Code Playgroud)
但还没有真正找到任何东西。我读了4.34或以上的变更日志,因此我显然应该使用PdfCopy.addDocument()。我试过了,并注释掉了其他代码,例如:
...
PdfReader reader = new PdfReader(generationReader);
reader.consolidateNamedDestinations();
subjobWriter.addDocument(reader);
subjobWriter.freeReader(reader);
subjobWriter.setOutlines(SimpleBookmark.getBookmark(reader));
...
Run Code Online (Sandbox Code Playgroud)
但这也无济于事。
问题是,除了表格(及其字段和内容)以外,原始PDF的所有内容都被复制了,或者看起来整个表格已被展平。
由于所有示例都可以使用不再存在的copyAcroForm()或已弃用的PdfCopyFields类,因此itextpdf.com和“ iText in Action,第二版”中的所有示例也都使用copyAcroForm(),我不知道如何解决这个问题。有人知道吗?
罗格