我在我的 iOS 项目中使用URLSession。(斯威夫特 4)。以下代码仅用于说明目的。
class MyTaskManager {
...
func postMyData(...) {
let defaultSession = URLSession(configuration: .default)
dataTask = defaultSession.dataTask(with: url) { data, response, error in
...
}
dataTask.resume()
}
func getMyData(...) {
let defaultSession = URLSession(configuration: .default)
dataTask = defaultSession.dataTask(with: url) { data, response, error in
...
}
dataTask.resume()
}
}
Run Code Online (Sandbox Code Playgroud)
我试图了解使用的最佳实践,URLSession即每个发出 HTTP 请求的函数调用是否应该创建一个新函数,URLSession还是应该创建一个全局函数,并且所有对 HTTP 请求的调用都应该使用相同的URLSession实例?
我在互联网上研究过,有一个公认的答案说我应该为每个函数/请求调用创建一个新的 URLSession,也有建议我应该重用相同的 URLSession。我对那些被接受但相互矛盾的答案感到困惑。有人可以为我澄清这个问题的正确答案吗?
我的应用程序没有上传或下载任务,只有 JSON 数据格式的纯 RESTful 请求。也不需要多个配置。
我正在推动一个viewController,我想要一个searchBar,但搜索栏根本没有显示.下面是代码.我错过了什么吗?
var searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search here..."
definesPresentationContext = true
searchController.searchBar.delegate = self
searchController.searchBar.sizeToFit()
if #available(iOS 11.0, *) {
self.navigationItem.searchController = searchController
} else {
// Fallback on earlier versions
navigationItem.titleView = searchController.searchBar
navigationItem.titleView?.layoutSubviews()
}
Run Code Online (Sandbox Code Playgroud) 我用一个名为"AuthenticationViewController.h"的视图控制器创建了一个带有nib"AuthenticationViewController.xib"的框架.并且要测试的示例项目已经用于呈现AuthenticationViewController.在Objective-C:
NSString *frameworkDirPath = [[NSBundle mainBundle] privateFrameworksPath];
NSString *frameworkBundlePath = [frameworkDirPath stringByAppendingPathComponent:@"xxx.framework"];
NSBundle *frameworkBundle = [NSBundle bundleWithPath:frameworkBundlePath];
AuthenticationViewController *authenticationViewController = [[AuthenticationViewController alloc]initWithNibName:@"AuthenticationViewController" bundle:frameworkBundle];
authenticationViewController.delegate = self;
[self presentViewController:authenticationViewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
哪个适合我.
但是当我使用以下代码时Swift:
let frameworkBundle = NSBundle(identifier: "xxx")
let authViewControler :AuthenticationViewController = AuthenticationViewController.init(nibName: "AuthenticationViewController", bundle: frameworkBundle)
authViewControler.delegate = self
self.presentViewController(authViewControler, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
该应用程序崩溃错误: -
因未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法在bundle中加载NIB:'NSBundle(loaded)',名称为'AuthenticationViewController''
你好我试图在不重新启动应用程序的情况下更改本地化字符串文件,更改语言后,我需要重新启动应用程序以查看新语言,这就是我正在更改应用程序语言的方式,但是我需要重新启动应用程序才能使用此库查看更改 https ://github.com/marmelroy/Localize-Swift我需要以编程方式设置所有标签值,这令人头疼,我不想这样
var selectedLanguage:Languages
let preferredLanguage : String = Bundle.main.preferredLocalizations.first!
print("app langugage \(preferredLanguage)")
if(preferredLanguage == "en") {
// Localize.setCurrentLanguage("de")
selectedLanguage = .de
LanguageManger.shared.setLanguage(language: selectedLanguage)
}
else {
// Localize.setCurrentLanguage("en")
selectedLanguage = .en
LanguageManger.shared.setLanguage(language: selectedLanguage)
}
LanguageManger.shared.setLanguage(language: selectedLanguage)
// return to root view contoller and reload it
let transition: UIViewAnimationOptions = .transitionFlipFromLeft
let rootviewcontroller: UIWindow = ((UIApplication.shared.delegate?.window)!)!
rootviewcontroller.rootViewController = self.storyboard?.instantiateViewController(withIdentifier: "rootnav")
let mainwindow = (UIApplication.shared.delegate?.window!)!
mainwindow.backgroundColor = UIColor(hue: 0.6477, saturation: 0.6314, brightness: 0.6077, alpha: 0.8)
UIView.transition(with: mainwindow, duration: 0.55001, …Run Code Online (Sandbox Code Playgroud) 一切都运行良好,直到iOS 8.但是当用户点击文本字段控件直接来自UIKeyboardWillHideNotification通知登录控制台 - 找不到支持键盘类型4的键盘iPhone-PortraitTruffle-NumberPad; 使用675849259_PortraitTruffle_iPhone-Simple-Pad_Default
这是代码 -
`
In view did load
- (void)viewDidLoad {
[super viewDidLoad];
self.txtMobNumber.delegate = self;
self.txtMobNumber.keyboardType = UIKeyboardTypeNumberPad;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:@"UIKeyboardWillShowNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:@"UIKeyboardWillHideNotification" object:nil];
}
notification callback
- (void)keyboardWillShow:(NSNotification *)notification
{
// Save the height of keyboard and animation duration
NSDictionary *userInfo = [notification userInfo];
CGRect keyboardRect = [userInfo[@"UIKeyboardBoundsUserInfoKey"] CGRectValue];
[UIView beginAnimations:@"moveKeyboard" context:nil];
float height = keyboardRect.size.height-60;
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y - height, self.view.frame.size.width, self.view.frame.size.height);
[UIView commitAnimations];
// [self …Run Code Online (Sandbox Code Playgroud) 我在Swift 3中有一个项目,我在视图上使用渐变.我在视图上放置了一个图像,但它位于渐变层下面,所以我打算以编程方式而不是故事板绘制图像.我似乎无法弄清楚如何使图像居中并且在视图的边界内适应方面.
是)我有的...
//Gradient Background
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.view.frame
gradientLayer.colors = [UIColor(red: 0/255, green: 147/255, blue: 255/255, alpha: 1.0).cgColor, UIColor(red: 162/255, green: 134/255, blue: 255/255, alpha: 1.0).cgColor]
gradientLayer.locations = [0.0, 1.0]
gradientLayer.startPoint = CGPoint(x: 0.0, y: 1.0)
gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.0)
self.view.layer.addSublayer(gradientLayer)
//Image
let mainImage = UIImage(named:"WhiteLogoFront")
var mainImageView = UIImageView(image:mainImage)
self.view.addSubview(mainImageView)
Run Code Online (Sandbox Code Playgroud) 我目前正在使用 gmail 查询“GTLGmail”是否有任何方式或查询来安排邮件。
我已经浏览了https://developers.google.com/gmail/api/guides,但我找不到任何解决方案。
提前致谢。
我正在使用gmail api开发应用程序.我想执行存档功能.我已经浏览了api https://developers.google.com/gmail/api但无法找到任何所需的解决方案.
任何人都可以建议我任何相同的解决方案.
提前致谢.
我正在制作一个显示 5 天天气温度的天气应用程序。我现在遇到的问题是如何显示在我的集合视图上动态检索的工作日?它们的英文显示效果很好,但我希望它们是俄语的。来源如下:
\n\ncellForItemAt这是我的函数中的代码
dateFormatter.locale = Locale(identifier: "en_US")\ndateFormatter.setLocalizedDateFormatFromTemplate("EEEE")\nlet actualDate = dateFormatter.string(from: date)\ncell.dayCollection.text = String(NSLocalizedString("%@", comment: "displaying weekdays"), actualDate) // see this line\nreturn cell\nRun Code Online (Sandbox Code Playgroud)\n\n这是我的 Localized.string 文件:
\n\n"%@" = "\xd0\x92\xd0\xbe\xd1\x81\xd0\xba\xd1\x80\xd0\xb5\xd1\x81\xd0\xb5\xd0\xbd\xd1\x8c\xd0\xb5";\n"%@" = "\xd0\x9f\xd0\xbe\xd0\xbd\xd0\xb5\xd0\xb4\xd0\xb5\xd0\xbb\xd1\x8c\xd0\xbd\xd0\xb8\xd0\xba";\n"%@" = "\xd0\x92\xd1\x82\xd0\xbe\xd1\x80\xd0\xbd\xd0\xb8\xd0\xba";\n"%@" = "\xd0\xa1\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb0";\n"%@" = "\xd0\xa7\xd0\xb5\xd1\x82\xd0\xb2\xd0\xb5\xd1\x80\xd0\xb3";\n"%@" = "\xd0\x9f\xd1\x8f\xd1\x82\xd0\xbd\xd0\xb8\xd1\x86\xd0\xb0";\n"%@" = "\xd0\xa1\xd1\x83\xd0\xb1\xd0\xb1\xd0\xbe\xd1\x82\xd0\xb0";\nRun Code Online (Sandbox Code Playgroud)\n\n如果您需要任何其他来源或答案,请告诉我。任何帮助将不胜感激!
\nios ×8
swift ×5
objective-c ×4
gmail-api ×2
iphone ×2
frameworks ×1
gmail ×1
image ×1
ios11 ×1
ios9 ×1
localization ×1
multilingual ×1
nsurlsession ×1
uitextfield ×1