I stored some setting for the peripheral that connected to the iOS device, but I want to add a button for the user to delete this peripheral, this means I must delete all setting related to this peripheral.
The store for this is simple using NSData:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:self.appDelegate.defaultBTServer.selectPeripheralInfo];
[defaults setObject:encodedObject forKey:self.appDelegate.defaultBTServer.selectPeripheralInfo.uuid];
[defaults synchronize];
But how to delete the setting related to this selectPeripheralInfo.uuid?
I found the
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:application.defaultBTServer.selectPeripheralInfo.uuid];
cannot work.
It looks like you might not be using the same key to add and remove the data. To add, you used:
self.appDelegate.defaultBTServer.selectPeripheralInfo.uuid
but to remove the data you used:
application.defaultBTServer.selectPeripheralInfo.uuid
If the values of those expressions aren't exactly the same, you won't be able to remove the data that you added because, obviously, the key will be wrong. So, check that.
Also, make sure that you call [defaults synchronize] after removing to update the defaults in storage.
Related
I wanted to know how can I save a user's input when the user enters something from his mobile phone in the UITextField?
If I just use the text field and run the app I can enter data in the text field but when I close the application the data is gone. So how can I store that data permanently and show it again after the application is closed and reopened. Is there any way to save it?
At first, you should save the text when user did editing before user close the application(e.g. saved by NSUserDefaults):
self.yourTextView.delegate = self;
- (void)textViewDidChange:(UITextView *)textView
{
if (textView.markedTextRange == nil)
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:textView.text forKey:#"userText"];
[defaults synchronize];
}
}
Then, load the text that user saved before when user open your application again:
- (void)viewDidLoad
{
[super viewDidLoad];
self.yourTextView.text = [[NSUserDefaults standardUserDefaults]objectForKey:#"userText"];
}
We can save data into 3 data base
If you want to store single data into db, you can use
NSUserDefault
For store
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:textView.text forKey:#"textviewdata"];
[defaults synchronize];
For Retrieve
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *strTextViewText = [NSString stringWithFormat:#"%#",[defaults objectForKey:#"textviewdata"]];
Then Store a larger amount of data,we can use
SQLite
CoreData
Here are some ways to save data inside application.
create local database using sqlite or coredata both provides facilty to save data locally and before use please find the different situations to use these databases.
using NSUserDefaluts but not recomemded because NSUserDefaults aren’t meant to store sensitive information for more information see imp link see example also if you still.
To store data using NSUserDefaluts:
[[NSUserDefaults standardUserDefaults]setObject:self.textfield.text forKey:#"yourKey"];
To get data anywhere inside app:
object = [[NSUserDefaults standardUserDefaults] valueForKey:#"yourKey"];
Try with this:
-(void)viewDidDisappear:(BOOL)animated
{
[[NSUserDefaults standardUserDefaults]setObject:self.urtextfield.text forKey:#"savedtext"];
}
-(void)viewWillAppear:(BOOL)animated
{
self.urtextfield.text = [[NSUserDefaults standardUserDefaults]objectForKey:#"savedtext"];
}
i have tried to look for a way to manage the number of views and likes on videos in iOS but i don't know the best way to do it or the safest way since i'm saving it to memory do i use NSUserDefault
Yes. You can use NSUserDefault. It is to store the data and you can retreive it from any place of the projects. It can be done by following way:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:yourdata forKey:#"keyName"];
[userDefaults synchronize];
Write the below code where you want to get the saved data in userdefaults.
NSUserDefaults *userDefauls = [NSUserDefau;ts standardUserDefaults];
value = [userDefaults objectForKey:#"keyName"];
I'm creating a simple double value, saving it as NSUserDefault and trying to recover it...but it doesn't.
- (IBAction)try:(id)sender {
double value = 42.00;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setDouble:value forKey:#"kDoubleKey"];
// NSLog(#"loading %f",myDouble);
}
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSUserDefaults *fetchDefaults = [NSUserDefaults standardUserDefaults];
double intValue = [fetchDefaults doubleForKey:#"kDoubleKey"];
NSLog(#"douvle retrieve %f",intValue);
}
Do not forget to synchronise whenever you save something to the defaults:
put this at the end of your try method
[[NSUserDefaults standardUserDefaults]synchronize];
Here is what apple says about this: Because this method is automatically invoked at periodic intervals, use this method only if you cannot wait for the automatic synchronization (for example, if your application is about to exit) or if you want to update the user defaults to what is on disk even though you have not made any changes.
This question already has answers here:
Best way to save data on the iPhone
(7 answers)
Closed 9 years ago.
I want to save some initial settings values given by the user when the app is open for the first time, If the values are saved it shouldn't be appear next time. How to save these values inside the app. Some suggested to use .plist , while searched regarding this. Is that the right approach? or there any simpler option available?
I would suggest saving the information in an array and then saving the array on the NSUserDefaults singleton that is integrated on the device. That way you can always access the information from anywhere.
Have in mind that this approach is only viable if the info is small enough.
To save on the NSUserDefaults class:
[[NSUserDefaults standardUserDefaults] setObject:yourMutableArray forKey:#"Key"];
To get the value:
NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults]
objectForKey:#"Key"]];
The easiest option is to save these value in form of key-value pair into NSUserDefaults.
NSUserDefaults *stdDefaults = [NSUserDefaults standardUserDefaults];
if([stdDefaults objectForKey:#"APP_OPENED"] == FALSE)
{
[stdDefaults setValue:#"YOUR_VALUE" forKey:#"YOUR_KEY"];
//Store more values if you wish
[stdDefaults setBool:YES forKey:#"APP_OPENED"];
[stdDefaults synchronize];
}
If you want to save non encrypted data, you can use NSUserDefaults:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:txtfield1.text forKey:#"info1"];
[defaults setObject:txtfield2.text forKey:#"info2"];
[defaults synchronize];
If it includes passwords, better to use KeyChain. Otherwise, NSUserDefaults would be a good choice...
I would suggest using NSUserDefaults. Something like this:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL hasOpenedAppBefore = [defaults boolForKey:#"hasOpenedAppBefore"];
[defaults setBool:YES forKey:#"hasOpenedAppBefore"];
You can use NSUserDefaults which can store data
Read apple's doc
Make use of NSUserDefaults to store the data. The stored data can retrieved and modified whenever necessary.
Read NSUserDefaults Class Reference
Read Tutorial
NSUserDefaults is the best option for store data inside application and you can easily use it throughout the application.
I want to write a test that says if this is the first time the app is being launched, then directions should be displayed. How can i detect the first app launch with Frank? I was thinking use NSUserDefaults, but I still don't know how to do that. Example step definition code would be great. Thanks a lot.
Take advantage of the fact that an NSUserDefaults not previously set is nil:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSNumber *firstRun = [userDefaults valueForKey:#"firstRun"];
if (firstRun == nil)
{
[userDefaults setValue:#YES forKey:#"firstRun"];
[userDefaults synchronize];
// Do what you want here
}