2014-11-08 36 views
11

numaralı hızda tanımlanan Bool değişkenini bulamıyor. Bir Swift dosyasında tanımlanmış bir varlamam var, ancak başka bir Objective-C dosyasında, bu varyantı ayarlamaya çalıştığımda, derleyici var olanı bulamadığından şikayet ediyor. Bu sorunu nasıl çözebilirim? Burada kodu: Swift içinde :Objc kodu,

objc içinde
var isCreating: Bool! 

: o zaman

SelectMemberViewController *ctrl = [[SelectMemberViewController alloc]init]; 
ctrl.isCreating = YES 

complier şikayet ediyor: Mülkiyet 'SelectMemberViewController'

+0

Bir çerçevede mi? Sınıftaki diğer işlevlerle test ettiniz mi? Eğer bir çerçevede ise, bunu kamuya açık olarak beyan etmelisiniz. –

+0

Çok belirsiz. Swift'deki gerçek bildirimi, Objective-C dosyasındaki gerçek çağrıyı ve gerçek derleyici iletisini gösterin. – matt

+0

@chrisco Hiçbir zaman "herkese açık" türde bir şey bildirmem, hızlı bir şekilde vars veya vals nesnesini tuttuğunuz sürece varsayılan olarak erişilebilir görünüyor, doğru muyum? – harthoo

cevap

20

The Çeşidi nesne üzerinde bulunamadı 'isCreating' Sorun, Objective-C'nin dünyasında hiçbir şeyin Bool!'a karşılık gelmemesidir. Böylece, bu beyan Objektif-C'ye maruz kalmamaktadır. Objective-C'nin onu görmesini istiyorsanız, bunu Bool no'lu açık bir şekilde beyan etmeniz gerekir.

+0

Evet, problemi çözüyor, teşekkürler, çünkü Boole, bir ilkel, yani herhangi bir isteğe bağlı türe uymuyor mu? – harthoo

+0

Evet. Ya da Swift'in terminolojisinde, AnyObject değil ve yalnızca bir AnyObject ObjectiveC'de (bir id) sıfır olabilir. – matt

+4

var isCreating: Bool = false. İlk başlangıç ​​zamanı düzeltildi. – lee