2014-07-22 13 views
5

Aşağıdaki kodu var: "Tür eşit değil"float 'MirrorDisposition' için dönüştürülebilir değil Swift mirrordisposition nedir?

let floatValue: Float = 1 
let intValue: Int = 1 

if floatValue == intValue { 
    println("Types and value are equal") 
} else { 
    println("Type is not equal.") 
} 

Ben yazdırmak biliyorum

Ama if floatValue == intValue hata bir hata var ise:

Float dönüştürülebilir değil 'MirrorDisposition'

önce bu hata görmemiştim ve hakkında hiçbir şey bulamadık o. Bu kod xCode 6 beta 1, 2 ve 3'te düzgün çalışıyor. Şu anda çalışıyorum xCode 6 beta 4.

Bu hatanın ne anlama geldiğini bilen var mı? Ve sonunda bunun için ne yapabilirim.

cevap

16

MirrorDisposition, bir Mirror değerinden (reflect işlevini kullanarak) alabileceğiniz türlerden biridir. Değerleri görüntülemeyi sağlamak için IDE için yapılır.

/// How children of this value should be presented in the IDE. 
enum MirrorDisposition { 
    case Struct 
    case Class 
    case Enum 
    case Tuple 
    case Aggregate 
    case IndexContainer 
    case KeyContainer 
    case MembershipContainer 
    case Container 
    case Optional 
    case ObjCObject 
} 

hata mesajı derleyici bir Int ile Float karşılaştırmak için bir == operatörü bulamadık demektir. Bununla birlikte,ve Int için == işleci bulundu, bu nedenle FloatMirrorDisposition dönüştürmek çalışıyor ama belli ki yapamazsınız, böylece bir hata iletisi alırsınız.

(Bu arada, derleyici kullanacağınız operatöre bağlı olarak aldığınız hata türü rasgele olur. Float is not convertible to Selector elde ediyorum).

Hata iletisi bir hatadır, Could not find == operator for Float and Int diyerek bir ileti olmalıdır. Swift, türleri derleyici tarafından kontrol edilir çünkü tipleri bu şekilde karşılaştırmak için hiçbir neden yoktur

if intValue == Int(floatValue) { 

:

değer eşitliğini kontrol etmek bariz düzeltme

alçıda kullanıyor. Açık bir şekilde türü kontrol etmek için bir neden olmamalıdır (tabii ki, nesne türleri değil, değer türleri hakkında konuşun).

+0

Uzun yanıtınız için teşekkürler, çok kullanışlıdır. – Bas

İlgili konular