我正在創建一個顯示我的Twitter時間表的應用程序。但我有時會收到以下錯誤:iOS - Twitter連接問題:「操作無法完成(可可錯誤3840.)」
Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x1fd807c0 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}
我使用下面的代碼來檢索嘰嘰喳喳的時間表:
-(void) getTimeLine{
ACAccountStore *account=[[ACAccountStore alloc] init];
ACAccountType *accountType=[account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
[activityIndicatorLoadTweets setHidden:NO];
[activityIndicatorLoadTweets startAnimating];
[account requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error)
{
if (granted==YES) {
NSArray *arrOfAccounts=[account accountsWithAccountType:accountType];
if ([arrOfAccounts count]!=0)
{
ACAccount *twitterAccount=[arrOfAccounts lastObject];
NSURL *requestURL=[NSURL URLWithString:@"http://api.twitter.com/1/statuses/home_timeline.json"];
NSMutableDictionary *params=[[NSMutableDictionary alloc] init];
[params setObject:@"20" forKey:@"count"];
[params setObject:@"1" forKey:@"include_entities"];
SLRequest *postRequest=[SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodGET URL:requestURL parameters:params];
postRequest.account=twitterAccount;
[postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error)
{
if (responseData==nil) {
NSLog(@"Could not connect. Try Again.");
[self showLabelAndStartTimer];
[email protected]"Could not connect at the moment. Please try Again.";
[activityIndicatorLoadTweets setHidden:YES];
[activityIndicatorLoadTweets stopAnimating];
}
else{
lblStatus.hidden=YES;
self.arrDataSource=[NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error];
if ([self.arrDataSource count]!=0)
{
dispatch_async(dispatch_get_main_queue(),^
{
[self.tableTweetsView reloadData];
[activityIndicatorLoadTweets setHidden:YES];
[activityIndicatorLoadTweets stopAnimating];
//[self fetchBollyTweetsFrom:self.arrDataSource];
});
}
}
}];
}
}
else{
NSLog(@"Failure to access acount. Please check your internet connection.");
[activityIndicatorLoadTweets setHidden:YES];
[activityIndicatorLoadTweets stopAnimating];
}
}];
}
請注意,錯誤說明是從線路:
self.arrDataSource=[NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error];
錯誤主要是自我解釋,但如果我的JSON是錯誤的,爲什麼我一半的時間成功迴應? 關於代碼的評論和建議也很受歡迎,因爲我是iOS編程和使用JSON的新手。 謝謝。
只是在您的代碼中進行了小幅更正:NSLog(@「%@」,newStr); – na19
對不起,只是輸入錯誤:) – MuhammadBassio
當我成功的結果Json打印正確。但問題是,我仍然得到間歇性的結果。我期待這種行爲的解釋。 – na19