Tag: nsuserdefaults

如何从AnyObject转换UserDefault值? 到一个Int,所以我可以保存它

我试图学习如何使用UserDefaults,并不知道如何存储我需要存储的值之一。 我有这个枚举: enum CalculationFormula: Int { case Epley case Brzychi case Lander case Lombardi case MayhewEtAl case OConnerEtAl } 和这个类与一个名为'selectedFormula',我想能够存储为一个NSUserDefaults值的属性: class CalculatorBrain: NSObject { var weightLifted: Double var repetitions: Double var oneRepMax: Double? var selectedFormula = CalculationFormula.Epley init(weightLifted: Double, repetitions: Double) { self.weightLifted = weightLifted self.repetitions = repetitions let userDefaults = NSUserDefaults.standardUserDefaults() self.selectedFormula = userDefaults.objectForKey("selectedFormula") […]

使用NSMutableArray保存并加载MapAnnotation引脚

我需要帮助我的MapAnnotation代码。 我想保存地图引脚,以便用户可以回到地图上,看看他/她已经放置的地图。 但是这个代码在视图加载时不显示引脚。 添加和保存引脚的代码: – (void)addPinToMap:(UIGestureRecognizer *)gestureRecognizer { if (gestureRecognizer.state != UIGestureRecognizerStateBegan) return; CGPoint touchPoint = [gestureRecognizer locationInView:self.mapView]; CLLocationCoordinate2D touchMapCoordinate = [self.mapView convertPoint:touchPoint toCoordinateFromView:self.mapView]; //NSMutableArray *pincoords = (NSMutableArray *)[[NSUserDefaults standardUserDefaults] objectForKey:@"saveCoords"]; NSMutableDictionary *pindict; NSUserDefaults *def = [NSUserDefaults standardUserDefaults]; NSMutableArray *pincoords = [def objectForKey:@"saveCoords"]; CLLocationCoordinate2D coordinates; coordinates.latitude = touchMapCoordinate.latitude; coordinates.longitude = touchMapCoordinate.longitude; NSNumber* latDegrees = [NSNumber […]

我怎样才能得到不同的每个tableView行的UIButton状态?

在这个代码中,我有一个选定的状态和取消select状态为我的button。 当button被按下时,它变成绿色,再次按下它变成红色以表示取消select的状态。 然而,所有这一切都在一个DetailViewController,当我从我的tableView中select一个特定的行,然后单击button显示绿色,并返回并尝试不同的行,button显示绿色的另一行,这表示我已经按下它(我没有)。 我想知道是否有一种方法只显示绿色detailView我所select的行和红色的其他人? let defaults = UserDefaults.standard // Outlets @IBOutlet weak var goingButton: UIButton! // Actions @IBAction func goingButtonTapped(_ sender: UIButton) { goingButton.isSelected = !goingButton.isSelected if goingButton.isSelected == true { goingButton.setImage(UIImage(named: "goingSelected"), for: UIControlState.selected) defaults.set(true, forKey: "going") defaults.synchronize() defaults.bool(forKey: "going") print("defaults: \(defaults)") } else if goingButton.isSelected == false { goingButton.setImage(UIImage(named: "goingDeselected"), for: UIControlState.normal) defaults.set(false, […]

Swift:在NSKeyedArchiver错误

Swift 3 iOS 10,尝试在NSKeyedArchiver中保存自定义对象的数组,基本上是在用户使用button切换部分之后保存表视图。 我已经尝试了几个post来解决这个问题,但没有运气,现在我试图自己做NSCoding和NSKeyedArchiver。 错误: 无法将types“[Blog]”的值转换为期望的参数types“NSCoder” 错误代码在Blog.swift中,处理NSCoding和我的博客对象的代码 import UIKit class BlogsCoding: NSObject, NSCoding { var blogList : [Blog] init(blogList : [Blog]) { self.blogList = blogList } convenience required init?(coder aDecoder: NSCoder) { guard let blogList = aDecoder.decodeObject(forKey: "blogs") as? [Blog] else { return nil } self.init (blogList : blogList) } func encode(with aCoder: NSCoder) […]

从UITableView删除行并从Swift / iOS中的NSUserDefaults更新数组的正确方法

从UITableView删除行并从NSUserDefaults更新数组的正确方法是什么? 在下面的例子中,我从NSUserDefaults读取一个数组,并提供一个UITableView的内容,我也允许用户删除UITableView项目,我不知道什么时候读取和写入到NSUserDefaults所以表一行删除后立即更新。 正如你所看到的,我首先读取viewDidLoad方法中的数组,并将其重新保存在commitEditingStyle方法中。 有了这个方法,当一行被删除时,我的表不会重新加载。 override func viewDidLoad() { super.viewDidLoad() // Lets assume that an array already exists in NSUserdefaults. // Reading and filling array with content from NSUserDefaults. let userDefaults = NSUserDefaults.standardUserDefaults() var array:Array = userDefaults.objectForKey("myArrayKey") as? [String] ?? [String]() } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } func tableView(tableView: UITableView, numberOfRowsInSection section: […]

如何保存plist到NSUserDefaults

我试图保存一个.plist我创build到我的NSUserDefaults以便我可以保存我所放入的数据,所以如果应用程序停止(从多任务栏中删除),我不会松散的值。 我已经在这里指出了这个教程 它有这个示例代码。 -(void)saveToUserDefaults:(NSString*)myString { NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; if (standardUserDefaults) { [standardUserDefaults setObject:myString forKey:@"Prefs"]; [standardUserDefaults synchronize]; } } -(NSString*)retrieveFromUserDefaults { NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; NSString *val = nil; if (standardUserDefaults) val = [standardUserDefaults objectForKey:@"Prefs"]; return val; } 我想要的一些帮助是如何剂量上面涉及保存.plists ? 我有一个.plist控制器类读取包.plist在根文档中创build一个新的.plist然后读取和写入…如何使用上述来保存应用程序退出或closures时? 这是我如何加载和写入我的.plist ,目前使用单数,并在它自己的类。 #pragma mark Singleton Methods + (id)sharedManager { @synchronized(self) { if […]

iOS / Swift 1.2 NSDictionray / Dictionary上的NSStandardUserDefaults

在“旧”Swift中,我用来注册我的默认值从.plist文件加载,像这样… let prefs = NSBundle.mainBundle().pathForResource("UserDefaults", ofType: "plist"); let dict = NSDictionary(contentsOfFile: prefs!); let defaults:NSDictionary! = dict?.valueForKey("defaults") as! NSDictionary; NSUserDefaults.standardUserDefaults().registerDefaults(defaults); NSUserDefaults.standardUserDefaults().synchronize(); 在Swift 1.2下,我得到错误… 无法使用types为“(NSDictionary!)”的参数列表调用“registerDefaults” 所以,事情已经改变了,Swift不再接受一个NSDictionary作为registerDefaults的一个参数。 那么,如何将我的NSDictionary转换为一个Dictionary对象,因为它们不能再互换?

有没有办法清除从应用程序安装存储的所有数据?

我有一个iOS应用程序,它将数据存储在NSUserDefults并且许多其他数据由于Web视图加载,社交媒体签名等而被设置在caching中。我想从应用程序创build的caching中删除所有数据。 有没有办法在iOS中以编程方式执行此操作?

NSUserDefaults standardUserDefaults不能与扩展一起使用

我在开发人员门户中将应用程序组添加到了我的应用程序ID,并在我的供应configuration文件中使用该应用程序ID。 Xcode中的我的产品标识符被设置为该应用程序ID。 在我的应用程序委托我从didFinishLaunchingWithOptions调用这个 NSUserDefaults.standardUserDefaults().setObject("hey", forKey: "TEST") NSUserDefaults.standardUserDefaults().synchronize() 在我的键盘应用程序扩展中,我称之为: if let test = NSUserDefaults.standardUserDefaults().objectForKey("TEST") as? String { println(test) } 这从来都不是真的。 如果我删除validationtesting,只是打印结果自定义键盘崩溃。 编辑也试过这个相同的崩溃结果: 应用程序委托 var userDefaults = NSUserDefaults(suiteName: "group.jackedgames.myappgroup") userDefaults.setObject("TEST", forKey: "TEST") userDefaults.synchronize() 键盘扩展 var userDefaults = NSUserDefaults(suiteName: "group.jackedgames.myappgroup") var test = userDefaults.objectForKey("TEST") as String NSLog(test) 在两个目标的“function”部分,我已经select了这个组ID的组。 我在这里错过了什么?

如何实现NSUserDefault通过多个视图进行访问

我试图在一个介绍性的iOS开发课程中的大多数视图中分享string和整数在50左右,我想知道如何去做这个…我知道MVC的范例是最好的,但我们没有,没有先进的东西,特别是核心数据。 我正在考虑使用NSUserDefaults,我知道这是错误的,但这个应用程序不必非常快,我认为这将是最简单的方法。 我的问题是,我会在哪里以及如何声明NSUserDefault对象? 我们使用的唯一一次是在一个视图中。 如果我在加载的第一个视图中声明它,我知道我可以用其他视图来访问它,但是我需要将第一个视图的头文件导入到其他视图中,还是可以访问? 更新 所以我想我会尝试通过在所有ViewControllers NSUserDefaults属性变得更容易。 然后尝试获取值,我将每个ViewControllers的头部实现到需要访问存储在NSUserDefaults(也具有NSUserDefault属性)中的数据的视图中。 该应用程序运行非常好,直到我到达该屏幕,没有更新。 我敢肯定我的错误在于我如何实现NSUserDefaults但我不确定如何正确执行。 当我们在课堂上讲过他们的时候(实际上这是一个有关“山姆的24小时自学iPhone应用程序开发”的定向研究(呕吐,这让我很愤怒)),我们唯一一次使用它们是在一个单一的视图应用程序,所以它可以用作闪光灯的白色背景的alpha。 这是如何提出的: NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; [userDefaults setInteger: var forKey: kVar]; [userDefaults synchronize]; 这是我在我的应用程序尝试: 在我的ViewController.h文件中查看每个视图: … @interface AppetizerViewController : UIViewController{ NSUserDefaults *userDefaults; … } @property(assign)NSUserDefaults *userDefaults; 然后当我点击一个button,我想保存该值到userDefaults : -(IBAction)plusEgg:(id)sender{ eggs++; eggString = [NSString stringWithFormat:@"%d",eggs]; eggQty.text = eggString; eggOrderedQty.text = eggString; [userDefaults setInteger:eggs forKey:kEggQty]; […]