想从有时可能为空的解析中查询一个数组,但 xcode 不允许我这样做
want to query an array from parse that might be empty sometimes but xcode won't let me
func reloadFriendList() {
var query = PFQuery(className:"userFriendClass")
query.whereKey("username", equalTo:user!.username!)
query.findObjectsInBackgroundWithBlock {
(objects: [PFObject]?, error: NSError?) -> Void in
if error == nil {
for object in objects! {
self.friendList = object["friends"] as! [String]
print(self.friendList)
self.reloadTableView()
}
} else {
// Log details of the failure
print("Error: \(error!) \(error!.userInfo)")
}
}
}
我想保存对象["friends"],这是一个用用户名解析成的数组
var friendList = [String]()
但我收到错误:"fatal error: unexpectedly found nil while unwrapping an Optional value",
当数组为空时,这意味着用户没有任何朋友,但当用户至少有 1 个或更多朋友时,它工作正常。
您需要准备好代码来处理 nil 情况和“objects
”为空数组的情况。
如果这是我的代码,我会这样做:
for object in objects {
if let friendList = object["friends"]
{
self.friendList = friendList
} else {
// make sure that your class's `friendList` var is declared as an optional
self.friendList = [String]()
}
}
由于 objects
是可选的并且可能是 nil
,您需要安全地解包它。一种方法是使用 nil 合并运算符 来展开它,或者如果 objects
是 nil
则替换一个空数组。您可以再次使用它来安全地解包好友列表:
for object in objects ?? [] {
self.friendList = (object["friends"] as? [String]) ?? []
您还可以使用可选绑定 if let
来安全地解包:
if let unwrappedObjects = objects {
for object in unwrappedObjects {
if let friends = object["friends"] as? [String] {
self.friendsList = friends
} else {
// no friends :-(
self.friendsList = []
}
}
}
func reloadFriendList() {
var query = PFQuery(className:"userFriendClass")
query.whereKey("username", equalTo:user!.username!)
query.findObjectsInBackgroundWithBlock {
(objects: [PFObject]?, error: NSError?) -> Void in
if error == nil {
for object in objects! {
self.friendList = object["friends"] as! [String]
print(self.friendList)
self.reloadTableView()
}
} else {
// Log details of the failure
print("Error: \(error!) \(error!.userInfo)")
}
}
}
我想保存对象["friends"],这是一个用用户名解析成的数组
var friendList = [String]()
但我收到错误:"fatal error: unexpectedly found nil while unwrapping an Optional value", 当数组为空时,这意味着用户没有任何朋友,但当用户至少有 1 个或更多朋友时,它工作正常。
您需要准备好代码来处理 nil 情况和“objects
”为空数组的情况。
如果这是我的代码,我会这样做:
for object in objects {
if let friendList = object["friends"]
{
self.friendList = friendList
} else {
// make sure that your class's `friendList` var is declared as an optional
self.friendList = [String]()
}
}
由于 objects
是可选的并且可能是 nil
,您需要安全地解包它。一种方法是使用 nil 合并运算符 来展开它,或者如果 objects
是 nil
则替换一个空数组。您可以再次使用它来安全地解包好友列表:
for object in objects ?? [] {
self.friendList = (object["friends"] as? [String]) ?? []
您还可以使用可选绑定 if let
来安全地解包:
if let unwrappedObjects = objects {
for object in unwrappedObjects {
if let friends = object["friends"] as? [String] {
self.friendsList = friends
} else {
// no friends :-(
self.friendsList = []
}
}
}