এনএসউসারডেফল্টগুলিতে স্ট্রিং সংরক্ষণ করবেন?


224

কিভাবে একটি স্ট্রিং সংরক্ষণ করতে NSUserDefaults?



3
আপনি যদি স্যুইফ্ট খুঁজছেন, তবে আমি একটি উত্তর যুক্ত করেছি।
Г И І И

উত্তর:


449
NSString *valueToSave = @"someValue";
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"preferenceName"];
[[NSUserDefaults standardUserDefaults] synchronize];

এটি পরে ফিরে পেতে

NSString *savedValue = [[NSUserDefaults standardUserDefaults]
    stringForKey:@"preferenceName"];

1
নির্দিষ্ট তারিখে এই স্ট্রিং বেসটি সংরক্ষণ করার কোনও উপায় আছে কি? ধন্যবাদ তবে আপনার কোডটি আমার মতো একই কাজ করে, আমি একটি কাস্টম ক্যালেন্ডার অ্যাপ তৈরি করি যা ব্যবহারকারী এতে তাদের নোট লিখতে পারে, উদাহরণস্বরূপ 3 ফেব্রুয়ারিতে ব্যবহারকারী কিছু লেখেন এবং এই পাঠ্যটি 3 ফেব্রুয়ারিতে সংরক্ষণ করা উচিত, এবং যখন ব্যবহারকারী অন্যটিতে চলে যান যে দিনগুলিতে সে থাকত সেদিনের তারিখ অনুসারে অন্য কিছু লিখতে পারে
ম্যাক.লভোর

6
কিছু কারণে সংরক্ষণের অংশটি সঠিকভাবে কাজ করে না যতক্ষণ না আমি সিঙ্ক্রোনাইজ পদ্ধতিটি না বলি। NSString *valueToSave = @"someValue";[[NSUserDefaults standardUserDefaults]setObject:valueToSave forKey:@"preferenceName"]; [[NSUserDefaults standardUserDefaults]synchronize
fs_tigre

5
[[এনএসউসারডেফল্টস স্ট্যান্ডার্ড ইউজারডেফল্টস] সিঙ্ক্রোনাইজ];
অবচয়

49

আরো স্পষ্ট করে

-(void)saveToUserDefaults:(NSString*)myString
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    if (standardUserDefaults) {
        [standardUserDefaults setObject:myString forKey:@"timestamps"];
        [standardUserDefaults synchronize];
    }
}

11
standardUserDefaultsঅবজেক্টের জন্য নীল চেক করার দরকার নেই । উদ্দেশ্য-সি-তে শূন্য বার্তা প্রেরণে এটি পুরোপুরি ঠিক।
jbrennan

12
তবে আরও গুরুত্বপূর্ণ বিষয়টি তিনি "সিঙ্ক্রোনাইজ" অন্তর্ভুক্ত করেছেন - আপনি যদি এটিকে কল না করেন তবে এনএসউসারডেফাল্টগুলি খুব ত্রুটিযুক্ত!
পোস্টকোডিজম

1
স্ট্যান্ডার্ড ইউজারডেফল্টস সিঙ্ক্রোনাইজ করে আমার জন্য কিছু অদ্ভুত বাগগুলি স্থির করে দেওয়া হয়, ধন্যবাদ!
স্কট রুপনাক

1
রেফারেন্সটি synchronizeপদ্ধতি সম্পর্কে কথা বলে : "আপনি যদি স্বয়ংক্রিয়ভাবে সিঙ্ক্রোনাইজেশনের জন্য অপেক্ষা করতে না পারেন তবেই এই পদ্ধতিটি ব্যবহার করুন (উদাহরণস্বরূপ, যদি আপনার অ্যাপ্লিকেশনটি প্রস্থান করতে চলেছে
eliocs

@ জাবরেন্নান আপনার মন্তব্য প্রযুক্তিগতভাবে সঠিক হলেও আপনি যদি গুরুত্বপূর্ণ কিছু লিখছেন এবং সফলভাবে এটি সংরক্ষণ করা হয়েছে তা নিশ্চিত হওয়ার জন্য এই উত্তরটি সহায়ক is তদ্ব্যতীত, সেই ক্ষেত্রে, এর রিটার্ন মানটি পরীক্ষা করা (উপেক্ষা করার পরিবর্তে) ভাল হবে synchronize। ডকটি বলেছেন: হ্যাঁ যদি ডেটা সফলভাবে ডিস্কে সংরক্ষণ করা হয়, অন্যথায় না।
তুলিল বাউরক

31

সুইফটের সাথে কীভাবে এটি করা যায় তা এখানে;

var valueToSave = "someValue"
NSUserDefaults.standardUserDefaults().setObject(valueToSave, forKey: "preferenceName")

এটি পরে ফিরে পেতে;

if let savedValue = NSUserDefaults.standardUserDefaults().stringForKey("preferenceName") {
    // Do something with savedValue
}

সুইফট ৩.০ এ

var valueToSave = "someValue"
UserDefaults.standard.set(valueToSave, forKey: "preferenceName")

if let savedValue = UserDefaults.standard.string(forKey: "preferenceName") {

}

ধন্যবাদ, যেহেতু মূল প্রশ্নটি
তাত্ক্ষণিক

মধ্যাহ্নভোজনের পরে আমার ছদ্মবেশ আবিষ্কারকটি নিয়ে আমার সমস্যা হচ্ছে। আসল প্রশ্নটি ২০১০ সালে জিজ্ঞাসা করা হয়েছিল Sw আমি সুইফটকে আজকের পথে যাওয়ার কারণে এটিকে অগ্রাহ্য করেছি।
রায় ফালক

12

এটার মতো কিছু:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// saving an NSString
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"];

তারপরে পুনরুদ্ধার করতে:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// getting an NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];

আপনার অবশ্যই অ্যাপলের এনএসউসারডেফল্টস ক্লাস রেফারেন্স এবং এটিও এই টিউটোরিয়ালটি পরীক্ষা করা উচিত: আইফোন প্রোগ্রামিং টিউটোরিয়াল - এনএসউজারডেফল্টস ব্যবহার করে ডেটা সংরক্ষণ / পুনরুদ্ধার



7
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// saving an NSString
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"];

// saving an NSInteger
[prefs setInteger:42 forKey:@"integerKey"];

// saving a Double
[prefs setDouble:3.1415 forKey:@"doubleKey"];

// saving a Float
[prefs setFloat:1.2345678 forKey:@"floatKey"];

// This is suggested to synch prefs, but is not needed (I didn't put it in my tut)
[prefs synchronize];

পুনরুদ্ধার করা হচ্ছে

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// getting an NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];

// getting an NSInteger
NSInteger myInt = [prefs integerForKey:@"integerKey"];

// getting an Float
float myFloat = [prefs floatForKey:@"floatKey"];


5

আপনি যে একই কীটি সংরক্ষণ করেন না এবং পড়েন না এমন বাগগুলি এড়াতে কীটির জন্য ধ্রুবক ব্যবহার করাও একটি ভাল অনুশীলন

NSString* const TIME_STAMPS_KEY = @"TIME_STAMPS_KEY";

1
-(void)saveToUserDefaults:(NSString*)string_to_store keys:(NSString *)key_for_the_String
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    if (standardUserDefaults) {
        [standardUserDefaults setObject:string_to_store forKey:key_for_the_String];
        [standardUserDefaults synchronize];
    }
}

এবং এটিকে কল করুন:

[self saveToUserDefaults:@"string_to_store" : @"key_for_the_string"];

ব্যবহার করে স্ট্রিংটি পুনরুদ্ধার করুন:

NSString * stored_string = [[NSUserDefaults standardUserDefaults] stringforkey:key_for_the_String]

1

FirstView

    {
    NSMutableArray *array; }
- (void)viewDidLoad {
    [super viewDidLoad];
    array = [[NSMutableArray alloc]init];
    array = [[NSUserDefaults  standardUserDefaults]objectForKey:@"userlist"];

     NSLog(@"%lu",(unsigned long)array.count);
    if (array>0)
    {
        for (int i=0; i<array.count; i++)
        {
            NSDictionary *dict1 = @{@"Username":[[array valueForKey:@"Username"] objectAtIndex:i],@"Mobilenumber":[[array valueForKey:@"Mobilenumber"] objectAtIndex:i],@"Firstname":[[array valueForKey:@"Firstname"] objectAtIndex:i],@"Lastname":[[array valueForKey:@"Lastname"] objectAtIndex:i],@"dob":[[array valueForKey:@"dob"] objectAtIndex:i],@"image":[[array valueForKey:@"image"] objectAtIndex:i]};
            NSLog(@"%@",dict1);
            NSArray *array1 = [[NSArray alloc]initWithObjects:dict1, nil];
            [[NSUserDefaults standardUserDefaults] setObject:array1 forKey:@"UserList"];
        }

    }
     }

ImagePicker

     - (void)imagePickerController:(UIImagePickerController *)picker         didFinishPickingMediaWithInfo:(NSDictionary *)info {

    UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
    self.imaGe.image = chosenImage;

    [picker dismissViewControllerAnimated:YES completion:NULL];
     }
  • (আইবিএક્શન) সাবমিটটন: (আইডি) প্রেরক {

    NSMutableArray *array2 = [[NSMutableArray alloc]initWithArray: 
    [[NSUserDefaults standardUserDefaults]objectForKey:     
        @"userlist"]];                                
    
    UIImage *ima = _imaGe.image;
    NSData *imagedata = UIImageJPEGRepresentation(ima,100);
    
    NSDictionary *dict =  @{@"Username":_userTxt.text,@"Lastname":_lastTxt.text,@"Firstname":_firstTxt.text,@"Mobilenumber":_mobTxt.text,@"dob":_dobTxt.text,@"image":imagedata};
    
       [array2 addObject:dict];
      [[NSUserDefaults standardUserDefaults]setObject:array2    
      forKey:@"userlist"];
       NSLog(@"%@",array2);
    
      [self performSegueWithIdentifier:@"second" sender:self];
    
     }
    • (আইবিএশন) নির্বাচন করুন আইএমজি: (আইডি) প্রেরক {

      UIImagePickerController * picker = [[UIImagePickerController বরাদ্দ
      ] init]; picker.delegate = স্ব; picker.allowsEditing = হ্যাঁ; পিকার.সোর্স টাইপ =
      ইউআইআইমেজপিক্সকন্ট্রোলারসোর্স টাইপফোটো লাইবারি; [স্ব-উপস্থিত ভিউ কন্ট্রোলার: পিকার অ্যানিমেটেড: হ্যাঁ সমাপ্তি: নাল];

      }


দ্বিতীয় দর্শন {NSMutableArray * অ্যারে; }

- (void)viewDidLoad {
    [super viewDidLoad];

     arr =[[NSMutableArray alloc]init];
    arr = [[NSUserDefaults standardUserDefaults]objectForKey:@"userlist"]; }

#pragma mark- TableView DataSource

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1; }

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return arr.count; }

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellId = @"tablecell";
    TableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:cellId];
    cell.userLbl.text =[[arr valueForKey:@"username"] objectAtIndex:indexPath.row];
    cell.ageLbl.text =[[arr valueForKey:@"dob"] objectAtIndex:indexPath.row];
    cell.profileImg.image =[UIImage imageNamed:[[arr valueForKey:@"image"] objectAtIndex:indexPath.row]];
    return cell; }

1

ইন Swift5 এবং Xcode 10.2

//Save
UserDefaults.standard.set(true, forKey: "Key1") //Bool
UserDefaults.standard.set(1, forKey: "Key2")  //Integer
UserDefaults.standard.set("This is my string", forKey: "Key3") //String
UserDefaults.standard.synchronize()

//Retrive
UserDefaults.standard.bool(forKey: "Key1")
UserDefaults.standard.integer(forKey: "Key2")
UserDefaults.standard.string(forKey: "Key3")

//Remove
UserDefaults.standard.removeObject(forKey: "Key3")

দ্রষ্টব্য: ব্যবহারকারী ডেফল্টগুলিতে পাঠ্য ডেটা সংরক্ষণ করুন (যার অর্থ স্ট্রিং, অ্যারে, অভিধান ইত্যাদি)। ইউজারডিফল্টগুলিতে চিত্রগুলি সংরক্ষণ করবেন না, এটি প্রস্তাবিত নয় (স্থানীয় ডিরেক্টরিতে চিত্রগুলি সংরক্ষণ করুন)।


0

সংরক্ষণের জন্য এটি ব্যবহার করুন:

[[NSUserDefaults standardUserDefaults]setObject:@"YES" forKey:@"KTerminated"];
[[NSUserDefaults standardUserDefaults]synchronize];

পুনরুদ্ধারের জন্য এটি ব্যবহার করুন:

[[[NSUserDefaults standardUserDefaults]stringForKey:@"KTerminated"] isEqualToString:@"YES"];

0

এখানে সুইফ্টের জন্য আমি দুটি ফাংশন তৈরি করি যা পছন্দ থেকে কীটির জন্য সংরক্ষণ এবং পুনরুদ্ধারের জন্য ডাকে

এটি আপনার জন্য পূর্ণ সাহায্য হতে পারে

// বস্তু সংরক্ষণের জন্য

static func setObject(value:AnyObject ,key:String)
{
    let pref = NSUserDefaults.standardUserDefaults()
    pref.setObject(value, forKey: key)
    pref.synchronize()
}

static func getObject(key:String) -> AnyObject
{
    let pref = NSUserDefaults.standardUserDefaults()
    return pref.objectForKey(key)!
}

0

সুইফট 3 এর জন্য আপডেট

func setObject(value:AnyObject ,key:String)
{
    let pref = UserDefaults.standard
    pref.set(value, forKey: key)
    pref.synchronize()
}

func getObject(key:String) -> AnyObject
{
    let pref = UserDefaults.standard
    return pref.object(forKey: key)! as AnyObject
}

0

সুইফটে 4.0.3 এক্সকোড 9

============set  Data in UserDefaults =========

  UserDefaults.standard.set(userName, forKey: "userName")
  UserDefaults.standard.synchronize()

============Get Data in UserDefaults =========

  let userName = UserDefaults.standard.string(forKey: "userName")
  print(userName ?? "Gera")

  userNameTextField.text = ""+userName!
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.