Swift 2.1: ไม่สามารถทำเครื่องหมายคุณสมบัติไดนามิกได้ใช่ไหม

ฉันจะแก้ไขข้อผิดพลาดในการรวบรวมนี้ได้อย่างไร

dynamic var users = [User]()

ไม่สามารถทำเครื่องหมายคุณสมบัติไดนามิกได้เนื่องจากประเภทไม่สามารถแสดงใน Objective-C

ฉันต้องการ dynamic เพื่อให้ตัวควบคุมมุมมองบางตัวสามารถสังเกต (ผ่าน KVO) users และอัปเดตมุมมองเมื่อ users เปลี่ยนแปลง


person ma11hew28    schedule 25.10.2015    source แหล่งที่มา
comment
ข้อความแสดงข้อผิดพลาดค่อนข้างชัดเจน คำไหนที่คุณไม่เข้าใจ?   -  person matt    schedule 25.10.2015
comment
ฉันเข้าใจมัน. ฉันไม่รู้วิธีแก้ไข ดูการอัปเดต   -  person ma11hew28    schedule 25.10.2015
comment
เป็นคลาสย่อยของผู้ใช้ของ NSObject หรือไม่   -  person vikingosegundo    schedule 25.10.2015
comment
@vikingosegundo ไม่ มันไม่ใช่ ฉันคิดว่าการทำให้มันเป็นคลาสย่อยของ NSObject ได้ผล! ขอบคุณ! :-) ถ้าฉันจำไม่ผิด ใน Swift เวอร์ชันก่อนหน้า มันทำงานได้โดยไม่ต้องเป็นคลาสย่อยของ NSObject กล่าวคือ มีเพียงผู้สังเกตการณ์เท่านั้นที่ต้องเป็นคลาสย่อยของ NSObject ฉันชอบแบบนั้นมากกว่าเพราะฉันไม่เข้าใจว่าทำไม User จึงต้องเป็นคลาสย่อยของ NSObject   -  person ma11hew28    schedule 25.10.2015
comment
ฉันคิดว่าวัตถุที่สังเกตจำเป็นต้องเป็นคลาสย่อย NSObject เสมอ ตามที่ระบุไว้ในบทความนี้ตั้งแต่เดือนกุมภาพันธ์ blog.scottlogic.com/2015/02/11/swift- kvo-alternatives.html   -  person vikingosegundo    schedule 25.10.2015


คำตอบ (1)


เช่นเดียวกับข้อผิดพลาดที่กล่าวถึง

ข้อผิดพลาด ไม่ใช่ @objc : NSObject:

class A{

}

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

ควรเปลี่ยนเป็น:

@objc class A:NSObject{

}

func something(){
    dynamic var a = [A]() //works, all good
}
person Daniel Krom    schedule 25.10.2015
comment
การใช้ @objc เมื่อสืบทอดจาก NSObject นั้นล้าสมัย โดยนัยสำหรับการสืบทอดใดๆ จาก NSObject - person Claus Jørgensen; 26.10.2015