ben derler ve Swift 3'e çalışır ve aşağıdaki hatayı alıyorum Swift 2 kod dönüştürme ediyorum şu şekildedir:Swift 3 dönüşüm 'INT1' alır dönüştürülebilir değil 'Bool'
'Int1' is not convertible to 'Bool'
kodudur :
isUpdated = sharedInstance.database!.executeUpdate(
"UPDATE Coin_Table SET upgrade=?, grade=?, WHERE coin_id=?",
withArgumentsInArray: [
coinInfo.upgrade, (coinInfo.grade != nil) ? coinInfo.grade! : NSNull(),
coinID])
benim kod abov derleme yukarıda
- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments;
olarak FMDB.h tanımlanan yönteme FMDB kullanarak kod e "(coinInfo.grade! =" işaretler) ve hata verir.
let theArray: NSArray = [true ? "foo" : NSNull()]
ve hala bu sefer bayraklar "gerçek" Aynı hatayı alıyorum:
ben hala ne olacağını görmek için basitleştirerek çalıştı.bu aramalara ilişkin bir demet yaptık ve https://bugs.swift.org/browse/SR-2372 dışındaki yakın bir şey bulamadım ama bu benim kod etkileyecek düşünmek olmaz küpe ile bir konudur.
Bu konuda biraz ışık tutabilir veya derleyici bir hata olması durumunda geçici bir çözüm önerilebilir mi?
Teşekkür
'Builtint.Int1'' Bool' yapının iç gösterimi ('yapının _value' özelliktir) ve bu tür bir hata/uyarı iletisinde ortaya çıkar, genellikle derleyici tarafından amaçlanan davranışa işaret eder. Bu davranış türünü de bağladığınız gibi davranıyor gibi görünüyor bu davranış da> derleyici, üçlü işlemin sonucunun türünü çıkaramaz. Örneğin. bir 'NSString' örneğini (derleyiciye güvenmek yerine) açık bir şekilde başlatmak için dize değişmezini kullanarak, hatayı (= theArray: NSArray = [true? NSString (string: "foo"): NSNull()] ') atlatır. – dfri
Yorum için teşekkürler. Ben aslında aynı satırda birden fazla ekler vardı benim soru gönderme için kullandığım gerçek kodu basitleştirmişti bu yüzden bu yöntem benim için biraz tuhaf olurdu. Aşağıda temp vars yaklaşım ile gitti. – KevinR