小编Fug*_*gly的帖子

FMDB SQLite问题:查询的行数?

有没有人知道如何在使用FMDB时返回查询计数?如果我执行Query @"selecttable(*)from sometable是......"我得到一个空的FMResultSet.如何获取查询的行数?我是否需要执行诸如"select*from sometable where .."之类的查询并迭代结果集?或者我可以使用useCount或最好的方式(在性能方面)做到这一点?

谢谢!

sqlite iphone objective-c fmdb

22
推荐指数
3
解决办法
2万
查看次数

Objective-C泛型协变

希亚斯

我有这个界面:

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即可向我发出警告,但我想摆脱该警告...

布勒?任何人?谢谢

generics objective-c covariant

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

FMDB插入AutoIncrement

我试图解决这个问题,但我似乎无法找到解决方案.我有一个表创建为:

 [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一起使用?

sqlite objective-c fmdb

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

copyAcroForm的替代方案是什么?

目前,我们正在将代码库从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(),我不知道如何解决这个问题。有人知道吗?

罗格

itext

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

标签 统计

objective-c ×3

fmdb ×2

sqlite ×2

covariant ×1

generics ×1

iphone ×1

itext ×1