Tag: nsuserdefaults

NSUserDefaults中的可变对象

我创build了一个简单的数据库,并放入NSUserDefaults。 我的数据库是NSMutableArray里面有字典和数组。 当我从NSUSerDefaults创buildNSMutableArray时,我无法将任何对象添加到我的NSMutableArray中的可变对象中。 这是我的代码: NSMutableArray *arrayOne = [NSMutableArray arrayWithContentsOfFile:[self createEditableCopyOfIfNeededWithFileName:@"Form.plist"]]; NSUserDefaults *ayarlar = [NSUserDefaults standardUserDefaults]; [ayarlar setObject:arrayOne forKey:@"form"]; NSMutableArray *arrayTwo = [NSMutableArray arrayWithArray:[[ayarlar objectForKey:@"form"] mutableCopy]]; [[[arrayTwo objectAtIndex:0] objectForKey:@"itemlar"] addObject:@"hop"]; 这里是错误: 'NSInternalInconsistencyException',原因:' – [__ NSCFArray insertObject:atIndex:]:发送给不可变对象的变异方法' 我怎样才能做这个工作? 谢谢大家。

iOS8扩展:在容器和扩展之间共享图像

我正在做一个iOS 8的扩展。 以下是我想要做的:用户从容器应用程序中的照片库中select图像,这些图像将与扩展名共享并供进一步使用。 现在我正在这样做(如果你不想读这个部分,请跳过下面的代码): 使用App Group和NSUserDefaults共享数据 。 将UIImage转换成NSData,然后将所有图像保存到一个NSArray中,然后将数组保存到一个NSDictionary中(我有很多数组,这是我组织它们的方式 – 所以我必须将它们保存到字典中),最后将字典保存到用户默认。 这是编码: NSArray *imageArray = … //this array contains all the images. //photoDataArray is a NSMutableArray; photoDataArray = [[NSMutableArray alloc]init]; for (UIImage *images in imageArray) { [photoDataArray addObject:UIImagePNGRepresentation(images)]; } NSThread * creationThread = [[NSThread alloc] initWithTarget:self selector:@selector(handleData) object:nil]; [creationThread start]; -(void)handleData{ NSDictionary *dic = [[NSDictionary alloc]init]; […]

如果应用程序在10秒内死亡,NSUserDefaults丢失新保存的数据

我正在寻找比NSUserDefaults更快的方式来保存用户的喜好。 我发现如果应用程序在写入NSUserDefaults大约10秒钟内死亡,它将不会永久保存。 我使用默认值保存自定义铃声的path,自定义图像的path,地图坐标,基本上只是用户定义的偏好。 使用核心数据更好的select? SQLite的? 什么被接受为最快和最轻量级?

无法使用应用程序组访问NSUserDefaults

我正在开发一个应用程序和一个widget,widget需要从app获取数据。 我用下面的代码来读写NSUserDefaults。 而且我还使用了$(PRODUCT_BUNDLE_IDENTIFIER).widget作为窗口小部件, $(PRODUCT_BUNDLE_IDENTIFIER)引用了这个post。 但小部件无法从应用程序或NSUserDefaults获取数据。 我怎样才能使它工作? func addTask(name: String?){ let key = "keyString" tasks.append(name!) let defaults = NSUserDefaults(suiteName: "group.Mins") defaults?.setObject(tasks, forKey: key) defaults?.synchronize() } /////// let defaults = NSUserDefaults(suiteName: "group.Mins") let key = "keyString" if let testArray : AnyObject = defaults?.objectForKey(key) { let readArray : [String] = testArray as! [String] timeTable = readArray timeTable = […]

如何用NSUserDefaults保存UIColor?

我试图编写我的代码,以便如果用户按下夜间button,背景将变成黑色,并保持黑色,如果用户closures应用程序。 (同样适用于白天模式。) 请注意:我已经编码了button,当它们按下时,所有的场景都变成了这个模式。 这是我的代码,我要去需要保存的背景颜色:(我需要它在两个if语句) if GlobalData.dayBool == true && GlobalData.night == false { backgroundColor = GlobalData.dayColor } if GlobalData.nightBool == true && GlobalData.dayBool == false { backgroundColor = GlobalData.nightColor } 我的日夜颜色: struct GlobalData { static var score = 0 static var dayColor = UIColor(red:0.93, green:0.93, blue:0.93, alpha:1.0) static var nightColor = UIColor(red:0.10, green:0.10, blue:0.10, alpha:1.0) […]

是一个plist或NSUserDefaults更有效的存储less量的数据?

对于这个项目,我可以用任何一种方法,但是我很好奇,如果使用plist来存储一些数据比在文档文件夹中保留一个plist效率更高或者更低。 数据大约是50个string/字典。 在这两种情况下,数据都会使用某个文件IO持久保存,因此磁盘访问应该类似。 然而,plist似乎有点多一点工作。

NSNumber与NSString映射的NSDictionary是非属性列表对象

以下代码: [[NSUserDefaults standardUserDefaults] setObject:photoIdToPath forKey:@"photo_id_to_path"]; 给我以下错误: Attempt to set a non-property-list object { 417675729 = "/Users/k06a/Library/Application Support/iPhone Simulator/7.1/Applications/21163736-DF6F-4E79-8196-6A966C81ED1B/Documents/417675729"; } as an NSUserDefaults value for key photo_id_to_path 这里是来自Xcodedebugging控制台的photoIdToPath字典内容分析: (lldb) po photoIdToPath { 417675729 = "/Users/k06a/Library/Application Support/iPhone Simulator/7.1/Applications/21163736-DF6F-4E79-8196-6A966C81ED1B/Documents/417675729"; } (lldb) po [[[photoIdToPath allKeys] lastObject] class] __NSCFNumber (lldb) po [[[photoIdToPath allValues] lastObject] class] NSPathStore2 所以NSPathStore2是NSString子类,为什么这个字典不是属性列表? 更新: 这里https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/nsuserdefaults_Class/Reference/Reference.html#//apple_ref/occ/instm/NSUserDefaults/setObject:forKey :我发现文字: […]

设置捆绑不能在watchOS 2上工作

这在watchOS 1上不是问题,但现在在watchOS 2上我无法读取手表扩展中的值。 根据苹果公司的文件 ,这是可能的。 根据这个线程上的一些人,这是可能的。 根据这个线程的苹果员工,这是可能的。 据我所知,我正确地设置了一切: 我使用相同的标识符在iOS应用程序和监视扩展上启用了应用程序组。 我将Settings-Watch.bundle添加到iOS应用程序,并向Plist添加了具有相同标识符的ApplicationGroupContainerIdentifier 当我使用标识符作为套件名称初始化NSUserDefaults对象时,我无法读取手表扩展中的值。 我可以在iOS应用上阅读。 这发生在模拟器和真实的设备上。 请不要发表关于如何使用Watch连接的答案。 在watchOS 2上,只有共享应用程序组才可以做到这一点,而不需要手表连接,人们可以做到这一点,这里直接出来的文档 : 在watchOS 2中,您的WatchKit扩展可能会读取首选项的值,但不能写入新的值。 watchOS 2中的首选项从iOS转发到Apple Watch,但您所做的任何修改都不会发送回iOS。

保存和加载数据在今天扩展(iOS 8)

是否有可能使用NSUserDefaults在Today Extension上保存和加载数据? closures通知中心后,小部件的行为就像一个终止的应用程序,所以任何数据结果都会丢失。 我怎么能解决这个问题? 这是我的代码: NSUserDefaults *defaults; – (void)viewDidLoad { [super viewDidLoad]; defaults = [NSUserDefaults standardUserDefaults]; NSArray *loadStrings = [defaults stringArrayForKey:@"savedStrings"]; if ([loadStrings objectAtIndex:0] != nil) { [display setText:[NSString stringWithFormat:@"%@", [loadStrings objectAtIndex:0]]]; } if ([loadStrings objectAtIndex:1] != nil) { calculatorMemory = [NSString stringWithFormat:@"%@", [loadStrings objectAtIndex:1]].doubleValue; } } – (IBAction)saveData:(id)sender { NSString *displayString; NSString *memoryString; NSArray […]

Swift NSUserDefaults setString:forKey:?

NSUserDefaults有integerForKey: , setInteger:forKey:和stringForKey:但没有setString:forKey: stringForKey: 你如何设置一个stringNSUserDefaults? 它有setObject:forKey:但是,在Swift中,String是一个结构。 是否可以使用setObject:forKey:来存储一个string?