2014-05-14 59 views
1

我試圖加載用戶的Twitter追隨者列表。它在iOS 7.1上加載得很好,但在iOS 6.1上崩潰。崩潰的行是performRequestWithHandler:,錯誤是- [__ NSCFNumber length]:無法識別的選擇器發送到實例0xcb4d580。問題的原因是什麼?爲什麼SLRequest讓iOS追隨者在iOS 6.1上崩潰而不是7.1

SLRequest* request = [SLRequest 
    requestForServiceType:SLServiceTypeTwitter 
    requestMethod:TWRequestMethodGET 
    URL:[NSURL URLWithString:[NSString stringWithFormat: 
     @"%@followers/list.json", 
     API_BASE_URL 
    ]] 
    parameters:@{ 
     @"user_id": @(self.context.userId.integerValue), 
     @"count": @(128), 
     @"skip_status": @"true" 
    } 
]; 
request.account = self.context.account; 
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { 
    // code that is irrelevant to crash 
}]; 

這些是如何對上述變量的定義:

  • API_BASE_URL是靜態的NSString @ 「https://api.twitter.com/1.1/
  • self.context.userId是一個數字的一​​個NSString。
  • self.context.account是登錄用戶的ACAccount。
+0

請指出導致崩潰的代碼的確切代碼行。 – rmaddy

+0

@rmaddy:我做到了。這是'performRequestWithHandler:'行。 – Pwner

+0

好的,它確實是在那條線上,而不是在處理程序中。我的猜測是,這個問題是由'count'參數是'NSNumber'而不是'NSString'造成的。將'@(128)'更改爲'@「128」'。還要讓'user_id'成爲一個字符串而不是數字。 – rmaddy

回答

1

提供的錯誤消息似乎iOS 6的下必須確保所有的參數都是字符串。將參數代碼更改爲:

parameters:@{ 
    @"user_id": self.context.userId, 
    @"count": @"128", 
    @"skip_status": @"true" 
}