Ios 从初始值设定项返回,不初始化所有存储的属性Xcode 8
我升级到Xcode 8,我的应用程序停止工作,除了这一个错误,我已经能够修复一切。我一直在网上查找,但尚未找到此错误的修复方法。任何帮助都将不胜感激。 代码如下:Ios 从初始值设定项返回,不初始化所有存储的属性Xcode 8,ios,swift,Ios,Swift,我升级到Xcode 8,我的应用程序停止工作,除了这一个错误,我已经能够修复一切。我一直在网上查找,但尚未找到此错误的修复方法。任何帮助都将不胜感激。 代码如下: struct Party { let itemRef:FIRDatabaseReference? // let userID:String! let name:String! let title:String! let body:String! init (us
struct Party {
let itemRef:FIRDatabaseReference?
//
let userID:String!
let name:String!
let title:String!
let body:String!
init (userID:String, name:String, title:String = "", body:String) {
self.userID = userID
self.name = name
self.title = title
self.body = body
self.itemRef = nil
}
init (snapshot:FIRDataSnapshot) {
userID = snapshot.key
itemRef = snapshot.ref
if let titl = snapshot.value as? [String:AnyObject] {
for child in titl{
let shotKey = snapshot.children.nextObject() as! FIRDataSnapshot
if let title = child.value as? [String:AnyObject]{
let title = title["title"]
print(title)
}
}
}else{
title = "Failed To Display Title"
}
if let user = snapshot.value as? [String:AnyObject] {
for child in user{
let shotKey = snapshot.children.nextObject() as! FIRDataSnapshot
if let name = child.value as? [String:AnyObject]{
let name = name["name"]
print(name)
}
}
}else{
name = "Failed To Display Name"
}
if let partyBody = snapshot.value as? [String:AnyObject]{
for child in partyBody{
let shotKey = snapshot.children.nextObject() as! FIRDataSnapshot
if let body = child.value as? [String:AnyObject]{
let body = body["body"]
print (body)
}
}
}else{
body = "Failed To Display Time"
}
}
func toAnyObject() -> Any {
return ["title":title, "name":name, "body":body]
}
}
在某些条件下,第二个init(快照:)
函数不会设置名称
、标题
、正文属性
您将此代码用于标题
:
if let titl = snapshot.value as? [String:AnyObject] {
for child in titl{
let shotKey = snapshot.children.nextObject() as! FIRDataSnapshot
if let title = child.value as? [String:AnyObject]{
let title = title["title"]
print(title)
}
}
}else{
title = "Failed To Display Title"
}
此代码仅设置else
子句中的title
属性。if
部分中对title
的四个引用是对名为title
的局部变量的引用,而不是名为title
的属性的引用。因此,编译器抱怨您从未设置title
属性,因为可能存在未设置的代码路径
对于名称
和正文
,您有相同的问题