Swift 2.1: Properti tidak dapat ditandai dinamis?

Bagaimana cara memperbaiki kesalahan kompilasi ini?

dynamic var users = [User]()

Properti tidak dapat ditandai dinamis karena tipenya tidak dapat direpresentasikan dalam Objective-C

Saya memerlukan dynamic agar pengontrol tampilan tertentu dapat mengamati (melalui KVO) users dan memperbarui tampilan mereka ketika users berubah.


person ma11hew28    schedule 25.10.2015    source sumber
comment
Pesan kesalahan yang cukup jelas. Kata mana yang tidak kamu mengerti?   -  person matt    schedule 25.10.2015
comment
Aku mengerti itu. Saya tidak tahu bagaimana cara memperbaikinya. Lihat pembaruan.   -  person ma11hew28    schedule 25.10.2015
comment
Apakah subkelas pengguna NSObject?   -  person vikingosegundo    schedule 25.10.2015
comment
@vikingosegundo tidak, bukan itu. Saya pikir menjadikannya subkelas NSObject berhasil! Terima kasih! :-) Jika saya ingat dengan benar, di versi Swift sebelumnya, ini berfungsi tanpa menjadi subkelas dari NSObject, yaitu hanya pengamat yang harus menjadi subkelas dari NSObject. Saya lebih menyukainya karena saya tidak mengerti mengapa User perlu menjadi subkelas dari NSObject.   -  person ma11hew28    schedule 25.10.2015
comment
Saya pikir objek yang diamati selalu harus dari subkelas NSObject. seperti yang juga dinyatakan dalam artikel bulan Februari ini. blog.scottlogic.com/2015/02/11/swift- kvo-alternatif.html   -  person vikingosegundo    schedule 25.10.2015


Jawaban (1)


Seperti yang disebutkan dalam kesalahan tersebut

kesalahan, bukan @objc : NSObject:

class A{

}

func something(){
    dynamic var a = [A]()
}

harus diubah menjadi:

@objc class A:NSObject{

}

func something(){
    dynamic var a = [A]() //works, all good
}
person Daniel Krom    schedule 25.10.2015
comment
Menggunakan @objc saat mewarisi dari NSObject sudah usang. Ini implisit untuk warisan apa pun dari NSObject - person Claus Jørgensen; 26.10.2015