appearanceWhenContainedIn警告ios 9

时间:2015-11-04 15:20:37

标签: ios objective-c

我有一些警告在ios 7& 8.当我们使用iOS 9时,它会给我一个警告。

这是警告:

  

' appearanceWhenContainedIn:'不推荐使用:首先在iOS 9.0中弃用 - 使用+ appearanceWhenContainedInInstancesOfClasses:而不是

所以我使用了这段代码:

[[UITextField appearanceWhenContainedInInstancesOfClasses:[UISearchBar class], nil] setTextColor:[UIColor whiteColor]];

而不是这段代码:

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor whiteColor]];

但是当我使用时,我得到了错误:

方法调用的参数太多,预期为1,有2

  

警告:'base64Encoding' is deprecated: first deprecated in iOS 7.0

在以下代码中:

 NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64Encoding]];
  

警告:'searchDisplayController' is deprecated: first deprecated in iOS 8.0

在以下代码中:

[self filterContentForSearchText:searchText scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
                                                   objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
  

警告:'sendSynchronousRequest:returningResponse:error:' is deprecated: first deprecated in iOS 9.0 - Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLSession.h

在下面的代码中:

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

我正在使用iOS9。我需要删除所有这些警告。提前谢谢!

1 个答案:

答案 0 :(得分:42)

appearanceWhenContainedInInstancesOfClasses:需要NSArray个班级。因此:

[[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTextColor:[UIColor whiteColor]];

而不是base64Encoding(自iOS 7.0以来已被弃用,因此不是对您的新警告),请使用以下命令:

NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64EncodedStringWithOptions:0]];

关于searchDisplayController,请参阅this Q&A

关于sendSynchronousRequest:returningResponse:error:,错误消息是明确的。您需要重写应用的该部分才能使用NSURLSession及其dataTaskWithRequest:completionHandler:方法。互联网上有很多有用的资源,例如objc.io文章:“From NSURLConnection to NSURLSession”