简体   繁体   中英

NSUserDefaults gives error with NSArray in Swift

I'm improving my swift skills but I got the error which is related to NSUserDefaults

I created a dictionary of array(NSArray). Then I want to save that dictionary.

Error:

2014-11-22 11:50:29.222 __ Property list invalid for format: 200 (property lists cannot contain objects of type 'CFType') 2014-11-22 11:50:29.222 __ *** NSForwarding: warning: object 0x7fc6a3e03900 of class '__.Department' does not implement methodSignatureForSelector: -- trouble ahead Unrecognized selector -[__.Department isNSString__]

These are my classes:

Please give me advice. I may fail with Dictionary of Array.

Department.swift

class Department {
    var facultyMembers = [FacultyMember]()
    let fullName: String
    let shortName: String

    init(fullName: String, shortName: String) {
        self.fullName = fullName
        self.shortName = shortName
    }

    func addMember(member: FacultyMember) {
        facultyMembers.append(member)
    }
}

University.swift

class University {
    var departments:[[Department]]

    init(){
        departments = [[Department]]()

        let userDefaults = NSUserDefaults.standardUserDefaults()
        if let defaultItems = userDefaults.arrayForKey("departments"){
            departments = defaultItems as [[Department]]
        }else{
            departments = [[Department]]()
            userDefaults.setObject(departments, forKey: "departments")
        }
    }
    func addDepartment(department: [Department]) {
        departments.append(department)

        let userDefaults = NSUserDefaults.standardUserDefaults()
        userDefaults.setObject(departments as NSArray, forKey: "departments")
    }
}

If I add department(which have included faculty members), It gives me error.

Best Regards.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM