Arrays Swift在将自定义类附加到数组时覆盖所有以前的值
我有一个名为Subject的自定义类,我试图初始化该类的版本并将其附加到数组中,但是当我将一个类附加到数组中时,它会覆盖其中所有准备就绪的主题。例如,此代码Arrays Swift在将自定义类附加到数组时覆盖所有以前的值,arrays,swift,append,overwrite,Arrays,Swift,Append,Overwrite,我有一个名为Subject的自定义类,我试图初始化该类的版本并将其附加到数组中,但是当我将一个类附加到数组中时,它会覆盖其中所有准备就绪的主题。例如,此代码 var things:[Subject] = [] things.append(Subject(initName: "1", initTeacher: "1", initClassroom: "1")) things.append(Subject(initName: "2", initTeacher: "2", initCl
var things:[Subject] = []
things.append(Subject(initName: "1", initTeacher: "1", initClassroom: "1"))
things.append(Subject(initName: "2", initTeacher: "2", initClassroom: "2"))
print(things[0].name)
print(things[1].name)
当它应该打印时,是否打印可选(“2”)可选(“2”)
“可选(“1”)可选(“2”)”
这是我的自定义类的代码
class Subject: NSManagedObject{
var name: String?
var teacher: String?
var classroom: String?
init(initName: String, initTeacher: String, initClassroom: String){
name = initName
teacher = initTeacher
classroom = initClassroom
}
func save() -> Bool{
if(name == "" || teacher == "" || classroom == ""){
return false
}else{
let appDelgate = UIApplication.sharedApplication().delegate as? AppDelegate
let managedContext = appDelgate?.managedObjectContext
let entity = NSEntityDescription.entityForName("Subject", inManagedObjectContext: managedContext!)
let subject = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)
subject.setValue(name, forKey: "name")
subject.setValue(teacher, forKey: "teacher")
subject.setValue(classroom, forKey: "classroom")
do{
try managedContext?.save()
}catch let error as NSError{
print("Failed because of \(error)")
}
return true
}
}
func edit(newName: String, newTeacher: String, newClassroom: String) -> Bool{
let appDelgate = UIApplication.sharedApplication().delegate as? AppDelegate
let managedContext = appDelgate?.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "Subject")
fetchRequest.predicate = NSPredicate(format: "name = %@", name!)
do{
let fetchResults = try managedContext?.executeFetchRequest(fetchRequest)
let editingSubject = fetchResults![0] as! NSManagedObject
editingSubject.setValue(newName, forKey: "name")
editingSubject.setValue(newTeacher, forKey: "teacher")
editingSubject.setValue(newClassroom, forKey: "classroom")
do{
try managedContext?.save()
return true
}catch{
return false
}
}catch{
return false
}
}}
谢谢您的帮助那么您显示的代码是否显示了问题?显示如何测试数组的内容。为什么要创建一个在显示的代码中没有使用的对象?@Wain问题是,当第二次附加到数组时,数组中的第一个值被第二个值覆盖。当我第一次运行“print(array[0].name]”时,它会打印“History”,而第二次则会打印西班牙语。你指的是哪个对象没有被使用