我在苹果IOS开发人员论坛上发布了这个问题,但显然缺乏响应。我希望StackOverflow向导可以帮助...Swift应用程序 - 从AnyObject投射到NSArray似乎失败
我正在开发一个使用Swift的iOS 8应用程序。在Xcode的β5的下方码的代码的工作,但给我一个连接错误中的β6和β7:
var sqlStr = "SELECT count(*) as count FROM nouns WHERE bucket = ?;"
var rs = db.executeQuery(sqlStr, withArgumentsInArray: [0] as NSArray)
接头错误是:
Undefined symbols for architecture x86_64:
__TFSs26_forceBridgeFromObjectiveCU__FTPSs9AnyObject_MQ__Q_", referenced from:
__TFC8les_Mots13WordGenerator9getBucketfS0_FT_Si in WordGenerator.o
(getBucket处于UIViewController中的方法WordGenerator。如果我将这种方法简化为这两行,我会得到同样的错误,如果我将这两行注释掉,错误消失,所以我知道问题出在这里。)
db.executeQuery ()是带有此签名的FMDB方法:
- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments;
如果我的代码改变这一点,它适用于所有的测试版:
var sqlStr = "SELECT count(*) as count FROM nouns WHERE bucket = '\(whereClause)';"
var rs = db.executeQuery(sqlStr, withArgumentsInArray: nil)
从连接错误和我的考验,和努力调试此,看来中投[0 ],这是类型AnyObject到NSArray,这是必需的,是失败的。我使用这个例子,但我看到类似的问题,在其他地区的应用程序,所有的地方都必须被投掷到一个AnyObject NSArray或NSDictionary。
上面的原始代码在Xcode beta 5中工作得很好,但在随后的beta版中不能运行。很显然,我并不了解AnyObject到NSArray的演员阵容,但如果我知道什么是我会感到厌烦,而且似乎beta5和6强制执行了以前没有强制执行的内容。我尝试过所有我能想到的明确演员,但都没有成功。
任何帮助将非常感激。
我有同样的问题,并尝试所有建议的测试版6的解决方案:http:// stackoverflow。com/a/25376271/887210无济于事。希望有人能够就这个问题提出一些见解! – 2014-09-03 01:47:09
您可能需要提供更多的上下文来获得有关此问题的帮助。我试图用一个简单的测试类来复制这个问题,该测试类具有该签名的方法,并且使用Xcode 6 beta 7编译时没有任何困难。 – ColGraff 2014-09-03 12:38:08
我删除了派生数据并清理了构建和中间文件夹的次数超过了我的数量,没有成功。我不知道我可以提供什么额外的上下文。我还用上面的语句编写了一个测试类,并导致相同的链接器错误。我很感激你的回应 - 它告诉我有人正在使它工作! – johnz 2014-09-03 15:05:11