我是初学程序员和本网站的新手,我在尝试之前尝试寻找解决方案,但是如果之前已经问过这个问题就很难对其进行措辞。
我正在使用Parse,现在我的主要目标是在标签中显示应用中的用户数量。
在我的AppDelegate.m
中PFQuery *userCountQuery = [PFUser query];
[userCountQuery countObjectsInBackgroundWithBlock:^(int userCount, NSError *error) {
if (!error) {
// The count request succeeded. Log the count
NSLog(@"There are %d users", userCount);
} else {
// The request failed
}
}];
该代码在我的控制台中获取正确的数字,现在我只是将此变量放入视图控制器以与标签一起使用。有一个简单的方法可以做到这一点,还是我从一开始就完成这个缺陷的方法?
答案 0 :(得分:1)
实际上,您在app委托中创建了一个getter / setter,但这不是正确的开发方式。我的意思是你应该在你的APP中有更多的层,比如经理,来处理这些数据
在这里你可以先尝试看看它是否有效
我的结构将允许您稍后将代码从appDelegate移动到任何其他类/地方,因为您可能在学习期间很快使用getter / setter;)
<强> myAppDelegate.h 强>
@interface myAppDelegate : NSObject <UIApplicationDelegate>
{
}
<强> ---------- 强>
<强> myAppDelegate.m 强>
@interface myAppDelegate()
@end
@implementation myAppDelegate
- (int)getProperNumber
{
return properNumber;
}
<强> ---------- 强>
<强> ViewController.m 强>
mAppDelegate * appDelegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate];
int count = [appDelegate getProperNumber];
干杯。
答案 1 :(得分:1)
我假设您目前在AppDelegate中有一个方法与您一起使用片段,就像这样:
@interface AppDelegate {
...
- (void)countUser;
}
然后您可以将该方法更改为:
- (void)countUserWithSuccessfulBlock:(void (^)(int))successfulBlock
{
PFQuery *userCountQuery = [PFUser query];
[userCountQuery countObjectsInBackgroundWithBlock:^(int userCount, NSError *error) {
if (!error) {
// The count request succeeded. Log the count
NSLog(@"There are %d users", userCount);
successfulBlock(userCount);
} else {
// The request failed
}
}];
}
然后从你的ViewController:
AppDelegate* appDelegate = (AppDelegate*) [UIApplication shareApplication].delegate;
[appDelegate countUserWithSuccessfulBlock:^(int result) {
//Display to your label;
}];