我正在尝试使用Swift将string对象从Parse添加到数组中。添加对象后,数组为空,因此显然没有添加任何内容。怎么啦?
var cities = NSMutableArray()
func retrieveCities() {
let cityQuery:PFQuery = PFQuery(className: "Locations")
cityQuery.limit = 1000
cityQuery.orderByAscending("City")
cityQuery.findObjectsInBackgroundWithBlock {
(objects:[AnyObject]?, error:NSError?) -> Void in
if error == nil {
if let objects = objects as? [PFObject] {
for object in objects {
self.cities.addObject(object["City"] as! String)
}
}
NSLog("Cities: %@", self.cities)
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
self.loadingIndicator.stopAnimating()
}
} else {
}
}
}这是我的objective-c版本。
- (void)retrieveCities {
self.cities = [[NSMutableArray alloc]init];
PFQuery *cityQuery = [PFQuery queryWithClassName:@"Locations"];
[cityQuery setLimit:1000];
[cityQuery orderByAscending:@"City"];
[cityQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
for (NSDictionary *objectDictionary in objects) {
[self.cities addObject:[objectDictionary objectForKey:@"City"]];
}
// Reload the table data and dismiss the loading indicator
dispatch_async(dispatch_get_main_queue(), ^ {
[self.tableView reloadData];
[self.loadingIndicator stopAnimating];
});
} else {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
}发布于 2015-09-15 02:41:50
避免在异步方法下迭代。尝试使用.extend。
像这样初始化你的数组:
var array: [PFObject] = []在调用find方法时,请尝试执行以下操作:
query.findObjectsInBackgroundWithBlock {
(objects, error) -> Void in
if (error == nil) {
self.array.extend(objects as! [PFObject])
println(self.array)
}else {
println(error?.userInfo)
}
}发布于 2015-09-15 06:05:43
尝试获取键的值,然后再将其添加为对象...
let cityTitle = object.valueForKey("City") as! String
self.cities.addObject(cityTitle)如果这样做不起作用,请为for loop中的每个对象运行一个println,以确保这些对象确实存在。
https://stackoverflow.com/questions/32571436
复制相似问题