我在蘋果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