我做错了什么? 我有一个带有变量的类,它是一个结构,并且运行良好。但是我在struct中有一个变量,它是另一个struct的类型。当我声明那个变量(第二级结构)时,它一直要求我提供变量..我只想让它们为空,我会设置它们或稍后发送它们。
在调用
中缺少参数'SV_StinkLocation_Longitude'的参数struct SV_StinkDetails_Model{
var SV_StinkDetails_Description:String = ""
var SV_StinkDetails_RecordingDate:NSDate! = NSDate()
var SV_StinkDetails_Location:SV_StinkLocation_Model! = SV_StinkLocation_Model()
}
var SV_StinkDetails_Location:SV_StinkLocation_Model! = SV_StinkLocation_Model()
import Foundation
import UIKit
import CoreData
import AVFoundation
import CoreLocation
struct SV_StinkLocation_Model{
var SV_StinkLocation_Longitude:NSNumber!
var SV_StinkLocation_Latitude:NSNumber!
var SV_StinkLocation_Suburb:String!
var SV_StinkLocation_State:String!
var SV_StinkLocation_Country:String!
}
但是,当我将细节结构化为类变量时,它可以正常工作。
var SV_Stink_StinkDetails:SV_StinkDetails_Model! = SV_StinkDetails_Model()
我做错了什么?
答案 0 :(得分:1)
我建议将Model结构更改为:
struct SV_StinkDetails_Model{
var SV_StinkDetails_Description:String
var SV_StinkDetails_RecordingDate:NSDate
var SV_StinkDetails_Location :SV_StinkLocation_Model?
}
您不必声明值,因为您使用默认初始化(如果您使用自定义初始化,则不需要声明它们)
在我放置在Location_Model上方的结构中是可选的,这意味着您可以将初始值设置为“nil”。稍后您可以添加此信息。
如果在您尝试访问它时设置了值,请记得检查(使用“if let”语句)!
增值:
您不需要在模型结构中将“!”放在类型声明后面。
如果您更改这两件事,您可以使用以下方式获取新课程:
import Foundation
import UIKit
import CoreData
import AVFoundation
import CoreLocation
struct SV_StinkLocation_Model{
var SV_StinkLocation_Longitude:NSNumber
var SV_StinkLocation_Latitude:NSNumber
var SV_StinkLocation_Suburb:String
var SV_StinkLocation_State:String
var SV_StinkLocation_Country:String
}
struct SV_StinkDetails_Model{
var SV_StinkDetails_Description:String
var SV_StinkDetails_RecordingDate:NSDate
var SV_StinkDetails_Location :SV_StinkLocation_Model?
}
var details_model = SV_StinkDetails_Model(SV_StinkDetails_Description: "Description:", SV_StinkDetails_RecordingDate: NSDate(), SV_StinkDetails_Location: nil)
details_model.SV_StinkDetails_Location = SV_StinkLocation_Model(SV_StinkLocation_Longitude: 1, SV_StinkLocation_Latitude: 1, SV_StinkLocation_Suburb: “Suburb", SV_StinkLocation_State: "State", SV_StinkLocation_Country: "Country")
最后,您可以使用以下方式访问选项值的长度:
if let longtitude = details_model.SV_StinkDetails_Location?.SV_StinkLocation_Longitude {
println(longtitude)
}