我使用相同的错误或questions阅读了其他5个相关的syntax。据我所知,没有任何与我的问题相关的内容。
-(void) createCopyOfDBIfNeeded{
NSFileManager *fileManager= [NSFileManager defaultManager];
BOOL isDatabaseInCache = [fileManager fileExistsAtPath:@selector(getDBFile)];
if (isDatabaseInCache) {
return;
}
}
// getDBFile方法:
-(NSString *) getDBFile {
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString * DBPath = [paths firstObject];
NSString * DBFile = [DBPath stringByAppendingPathComponent:@"productDBFile.db"];
return DBFile;
}
似乎错误与@selector(getDBFile)
有关。
如果我使用[self getDBFile]而不是一切正常,但我想学习如何以及在哪里适当地使用@selector以及错误/警告在这里意味着什么。
我也收到警告:Incompatible pointer types sending 'SEL' to parameter of type
编辑:这个问题基本上是What's the difference between a method and a selector?的重复
答案 0 :(得分:2)
您只能将选择器传递给带选择器的方法。 fileExistsAtPath:
需要NSString *
,而不是SEL
。
您希望将getDBFile
的返回值传递给fileExistsAtPath:
,而不是getDBFile
的选择器。
如果是这样,请拨打getDBFile
而不是选择其选择器:
BOOL isDatabaseInCache = [fileManager fileExistsAtPath:[self getDBFile]];