Object 斯威夫特';任何对象';没有名为“的成员”;制造;
我很困惑,我怎么能有两个键作为字符串,一个可用,另一个不可用。靠近末端的行中发生错误: println(“这是一辆(车。年)(车。制造)(车。模型)”) “make”变量可能导致问题的原因是什么Object 斯威夫特';任何对象';没有名为“的成员”;制造;,object,compiler-errors,swift,Object,Compiler Errors,Swift,我很困惑,我怎么能有两个键作为字符串,一个可用,另一个不可用。靠近末端的行中发生错误: println(“这是一辆(车。年)(车。制造)(车。模型)”) “make”变量可能导致问题的原因是什么 protocol NSCoding { } class Car:NSObject { var year: Int = 0 var make: String = "" var model: String = "" override init() {
protocol NSCoding {
}
class Car:NSObject {
var year: Int = 0
var make: String = ""
var model: String = ""
override init() {
super.init()
}
func encodeWithCoder(aCoder: NSCoder!) {
aCoder.encodeInteger(year, forKey:"year")
aCoder.encodeObject(make, forKey:"make")
aCoder.encodeObject(model, forKey:"model")
}
init(coder aDecoder: NSCoder!) {
super.init()
year = aDecoder.decodeIntegerForKey("year")
make = aDecoder.decodeObjectForKey("make") as String
model = aDecoder.decodeObjectForKey("model") as String
}
}
class CarData {
func archiveData () {
var documentDirectories:NSArray
var documentDirectory:String
var path:String
var unarchivedCars:NSArray
var allCars:NSArray
// Create a filepath for archiving.
documentDirectories = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
// Get document directory from that list
documentDirectory = documentDirectories.objectAtIndex(0) as String
// append with the .archive file name
path = documentDirectory.stringByAppendingPathComponent("swift_archiver_demo.archive")
var car1:Car! = Car()
var car2:Car! = Car()
var car3:Car! = Car()
car1.year = 1957
car1.make = "Chevrolet"
car1.model = "Bel Air"
car2.year = 1964
car2.make = "Dodge"
car2.model = "Polara"
car3.year = 1972
car3.make = "Plymouth"
car3.model = "Fury"
allCars = [car1, car2, car3]
// The 'archiveRootObject:toFile' returns a bool indicating
// whether or not the operation was successful. We can use that to log a message.
if NSKeyedArchiver.archiveRootObject(allCars, toFile: path) {
println("Success writing to file!")
} else {
println("Unable to write to file!")
}
// Now lets unarchive the data and put it into a different array to verify
// that this all works. Unarchive the objects and put them in a new array
unarchivedCars = NSKeyedUnarchiver.unarchiveObjectWithFile(path) as NSArray
// Output the new array
for car : AnyObject in unarchivedCars {
println("Here's a \(car.year) \(car.make) \(car.model)")
}
}
}
在for循环中使用向下投射。编译器需要知道car的类型是car,而不仅仅是任何对象
for car in cars as [Car!] {
println("Here's a \(car.year) \(car.make) \(car.model)")
}
你的代码运行得很好。测试仪在xCode 6测试版5。