Dize NSUserDefaults'a kaydedilsin mi?


Yanıtlar:


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

daha sonra geri almak için

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

1
Bu dize tabanını belirli bir tarihte kaydetmenin bir yolu var mı? teşekkürler ama kodunuz benimkiyle aynı şekilde çalışıyor, kullanıcının notlarını yazabileceği özel bir takvim uygulaması oluşturuyorum, örneğin 3 Şubat kullanıcısında bir şeyler yazıyor ve bu metin 3 Şubat'ta kaydedilmeli ve kullanıcı diğerine taşındığında gün tarihine tahakkuk eden başka bir şey yazabilir
Mc.Lover

6
Herhangi bir nedenle, senkronize etme yöntemini çağırıncaya kadar kaydetme parçası düzgün çalışmadı. NSString *valueToSave = @"someValue";[[NSUserDefaults standardUserDefaults]setObject:valueToSave forKey:@"preferenceName"]; [[NSUserDefaults standardUserDefaults]synchronize
fs_tigre

5
[[NSUserDefaults standardUserDefaults] senkronize ediyor]; kullanımdan kaldırılıyor
Juan Boero

49

daha kesin

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

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

11
standardUserDefaultsNesne için sıfır kontrolü yapılmasına gerek yoktur . Objective-C içinde nil mesaj göndermek için gayet iyi.
jbrennan

12
Ama daha da önemlisi o "senkronize" dahil - NSUserDefaults bunu çağırmazsanız çok düzensiz!
PostCodeism

1
standardUserDefaults senkronize benim için bazı garip hatalar senkronize, teşekkürler!
Scott Roepnack

1
Başvuru synchronizeyöntemden bahsediyor : "bu yöntemi yalnızca otomatik senkronizasyonu bekleyemiyorsanız kullanın (örneğin, uygulamanız çıkmak
üzereyse

@jbrennan Yorumunuz teknik olarak doğru olsa da, bu yanıtı önemli bir şey yazıyorsanız ve başarıyla kaydedildiğinden emin olmak istiyorsanız yardımcı olur. Ayrıca, bu bağlamda, geri dönüş değerini test etmek (göz ardı etmek yerine) iyi olacaktır synchronize. Doc diyor ki: Veriler başarıyla diske kaydedildiyse EVET, aksi takdirde HAYIR.
Basil Bourque

31

Swift ile aynısını şu şekilde yapabilirsiniz;

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

Daha sonra geri almak için;

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

Swift 3.0'da

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

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

}

Teşekkürler, orijinal soru hızlı olduğu için, +1
Akshansh Thakur

Öğle yemeğinden sonra kinizm dedektörümde sorun yaşıyorum. Orijinal soru 2010 yılında sorulmuştur. Bu yüzden Swift bugün gitmek için bir yol olduğu için bunu iptal ettim.
Roy Falk

12

Bunun gibi bir şey:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

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

Sonra almak için:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

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

Apple'ın NSUserDefaults Sınıf Referansını gerçekten kontrol etmelisiniz ve belki de bu öğretici: iPhone Programlama Eğitimi - NSUserDefaults Kullanarak Veri Kaydetme / Alma


12

Bu ifadeyi unutmayın, aksi takdirde her zaman işe yaramayabilir:

[standardUserDefaults synchronize];

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];

alınıyor

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"];

6

[[NSUserDefaults standardUserDefaults] setValue:aString forKey:aKey]


5

İyi bir uygulama, aynı anahtarla saklamadığınız ve okumadığınız hataları önlemek için anahtar için bir sabit kullanmaktır.

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];
    }
}

Ve şöyle deyin:

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

Aşağıdakileri kullanarak dizeyi alın:

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

1

İlk bakış

    {
    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];
     }
  • (IBAction) sendBton: (kimlik) gönderen {

    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];
    
     }
    • (IBAction) selectImg: (kimlik) gönderen {

      UIImagePickerController * picker = [[UIImagePickerController
      ayır] init]; seçici.delegate = benlik; picker.allowsEditing = EVET; picker.sourceType =
      UIImagePickerControllerSourceTypePhotoLibrary; [self presentViewController: animasyonlu seçici: EVET tamamlanma: NULL];

      }


ikinci Görünüm {NSMutableArray * arr; }

- (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

In Swift5 ve 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")

Not: Metin verilerini UserDefaults'a kaydedin (Dize, Dizi, Sözlük vb.). Görüntüleri UserDefaults'a kaydetmeyin, önerilmez (Görüntüleri yerel dizine kaydedin).


0

Kaydetmek için şunu kullanın:

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

Retriveing ​​için bunu kullanın:

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

0

Burada Swift için Tercih'ten anahtar için kaydetme ve geri alma değerini çağıran iki işlev oluşturuyorum

bu senin için tam yardım olabilir

// nesneyi kaydetmek için

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

Swift 3 için güncelleme

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

Swift 4.0.3 Xcode 9'da

============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!
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.