如何使用UserDefaults在Swift中保存/检索字符串,布尔值和其他数据?
嗨,我已经阅读了几个关于applicationWillTerminate被调用而没有被调用的问题.
我想总结一下我的理解,因为有几个帖子的说法不同.
对于IOS(没有多任务处理),在按下主页按钮时始终会调用它.
适用于IOS 4及以上版本
一个.按主页按钮时不会调用它(当应用程序移动到后台时)
湾 从多任务停靠平台关闭应用程序时调用它,如果应用程序在info.plist中有一个突然终止标志禁用,则不会调用它.(我设置"应该应用程序应该死亡事件",甚至在从多任务停靠点关闭应用程序时,终止功能没有被调用)
基于此,我有几个问题
设置应用程序应该获取App Died事件标志是一个好习惯吗?(我设置"应该应用程序应该死亡事件",甚至在从多任务停靠点关闭应用程序时,终止功能没有被调用)
要么
注册"UIApplicationWillTerminateNotification"比info.plist设置更好吗?
基本上我只需要在应用程序终止时做一些工作,而不是在它移动到后台时做.
要么
编辑(1):当应用程序终止时,以下内容被发送到APP.我怎么抓住它?
程序收到信号:"SIGKILL".
编辑(2):
请注意:从多任务底座上卸下时,不会在IOS 4及更高版本中调用它.你可能会认为是.但就我而言,事实并非如此.
我问是否有人知道为什么?还有别的我想念的东西.
另请注意我设置了"应用程序应该获取App Died事件",即使这样也没有被调用.
编辑(3):
以下问题的答案也不起作用. applicationWillTerminate不会被调用
有人像我一样面临类似的问题吗?
我有两个NSMutableArray人.它们由图像或文本组成.数组通过a显示UITableView.当我杀死应用程序时,其中的数据UITableView会丢失.如何UITableView使用NSUserDefault?保存数组?
我一直在寻找,如果我这样做,我是否需要做同步:
[[NSUserDefaults standardUserDefaults] removeObjectForKey:kType];
Run Code Online (Sandbox Code Playgroud)
那之后,我该怎么办?:
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)
在这件事上等你的答案.
int ramdomnumber = arc4random_uniform(900000) + 100000;
[[NSUserDefaults standardUserDefaults] setObject:ramdomnumber forKey:@"contactno"];
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)
我尝试了上面的代码,但它显示了 ARC 不允许将 'int' 隐式转换为 'id_nullable'之类的错误。任何人都可以建议我如何在 nsuserdefaults 中存储 int 值。
我正在尝试保存从 Parse.com 检索的图像,如下所示:
let userImageFile = object["Image"] as PFFile
userImageFile.getDataInBackgroundWithBlock {
(imageData: NSData!, error: NSError!) -> Void in
if error == nil {
image = UIImage(data:imageData)
let imageToSave:NSData = UIImagePNGRepresentation(image)
self.saveImage(intRandomNumb, retImage: imageToSave)
}
}
Run Code Online (Sandbox Code Playgroud)
saveImage 函数如下所示:
func saveImage(imagepath:Int, retImage:NSData){
println("image is being saved")
let defaults = NSUserDefaults.standardUserDefaults()
let imagePathName = "\(imagepath)"
defaults.setObject(retImage, forKey: imagePathName)
}
Run Code Online (Sandbox Code Playgroud)
后来,我试图像这样显示这个图像:
var point = gestureRecognizer.locationInView(self.tv)
if let indexPath = self.tv.indexPathForRowAtPoint(point)
{
let data = mainList[indexPath.row] as SecondModel
let fileRef = data.fileReference
let intFileRef = …Run Code Online (Sandbox Code Playgroud) 如果我有一个登录用户并使用他的 ID 存储在应用程序中
NSUserDefaults.standardUserDefaults().setBool(true, forKey:"isUserLoggedIn");
NSUserDefaults.standardUserDefaults().synchronize();
Run Code Online (Sandbox Code Playgroud)
如何将其作为会话,以便我可以在每个页面中使用它
示例 欢迎“用户登录”
ios ×4
swift ×3
objective-c ×2
xcode ×2
cocoa-touch ×1
ios4 ×1
iphone ×1
nsdata ×1
session ×1
uiimageview ×1
uitableview ×1
userdefaults ×1