这就是我最终想出的。它对我需要它做的事情来说很好。希望它也可以帮助其他人。
- (void)fetchTweets
{
twitterLoader.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"StatusIndicator.png"],
[UIImage imageNamed:@"StatusIndicator1.png"],
[UIImage imageNamed:@"StatusIndicator2.png"],
[UIImage imageNamed:@"StatusIndicator3.png"],
[UIImage imageNamed:@"StatusIndicator4.png"],
[UIImage imageNamed:@"StatusIndicator5.png"],
[UIImage imageNamed:@"StatusIndicator6.png"],
[UIImage imageNamed:@"StatusIndicator7.png"],
[UIImage imageNamed:@"StatusIndicator8.png"],
[UIImage imageNamed:@"StatusIndicator9.png"],
[UIImage imageNamed:@"StatusIndicator10.png"],
[UIImage imageNamed:@"StatusIndicator9.png"],
[UIImage imageNamed:@"StatusIndicator8.png"],
[UIImage imageNamed:@"StatusIndicator7.png"],
[UIImage imageNamed:@"StatusIndicator6.png"],
[UIImage imageNamed:@"StatusIndicator5.png"],
[UIImage imageNamed:@"StatusIndicator4.png"],
[UIImage imageNamed:@"StatusIndicator3.png"],
[UIImage imageNamed:@"StatusIndicator2.png"],
[UIImage imageNamed:@"StatusIndicator1.png"],
nil];
twitterLoader.animationDuration = 0.8;
[twitterLoader startAnimating];
ACAccountStore *store = [[ACAccountStore alloc] init];
ACAccountType *twitterAccountType =
[store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
// Request permission from the user to access the available Twitter accounts
[store requestAccessToAccountsWithType:twitterAccountType
options:nil
completion:^(BOOL granted, NSError *error)
{
if (!granted)
{
NSLog(@"User rejected access to the account.");
}
else
{
[twitterLoader startAnimating];
NSArray *twitterAccounts =
[store accountsWithAccountType:twitterAccountType];
if ([twitterAccounts count] > 0)
{
ACAccount *account = [twitterAccounts objectAtIndex:0];
[twitterLoader startAnimating];
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:@"johnnelm9r" forKey:@"screen_name"];
[params setObject:@"100" forKey:@"count"];
[params setObject:@"0" forKey:@"include_entities"];
[params setObject:@"0" forKey:@"include_rts"];
// The endpoint that we wish to call
NSURL *url =
[NSURL
URLWithString:@"http://api.twitter.com/1.1/statuses/user_timeline.json"];
SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeTwitter
requestMethod:SLRequestMethodGET
URL:url
parameters:params];
// Attach the account object to this request
[request setAccount:account];
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error)
{
if (!responseData)
{
NSLog(@"%@", error);
}
else
{
NSError *jsonError;
tweets = [NSJSONSerialization JSONObjectWithData:responseData
options:NSJSONReadingMutableLeaves
error:&jsonError];
if (tweets)
{
NSLog(@"%@", tweets);
[self.twitterTableView reloadData];
[twitterLoader stopAnimating];
}
else
{
NSLog(@"%@", jsonError);
}
}
}];
[self.twitterTableView reloadData];
[twitterLoader stopAnimating];
}
}
}];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name:kReachabilityChangedNotification
object:nil];
self.reachability = [Reachability reachabilityWithHostName:@"www.apple.com"];
[self.reachability startNotifier];
}
我还添加了一个简单的加载器和可达性。如果您不需要它,只需删除底部的 NSNotification。
并确保添加
账户和社会框架
并将它们的头文件导入到您使用它的 .m 文件中。
祝你好运!