Làm thế nào để lưu một chuỗi vào NSUserDefaults
?
Làm thế nào để lưu một chuỗi vào NSUserDefaults
?
Câu trả lời:
NSString *valueToSave = @"someValue";
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"preferenceName"];
[[NSUserDefaults standardUserDefaults] synchronize];
để lấy lại sau
NSString *savedValue = [[NSUserDefaults standardUserDefaults]
stringForKey:@"preferenceName"];
NSString *valueToSave = @"someValue";[[NSUserDefaults standardUserDefaults]setObject:valueToSave forKey:@"preferenceName"]; [[NSUserDefaults standardUserDefaults]synchronize
chính xác hơn
-(void)saveToUserDefaults:(NSString*)myString
{
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if (standardUserDefaults) {
[standardUserDefaults setObject:myString forKey:@"timestamps"];
[standardUserDefaults synchronize];
}
}
standardUserDefaults
đối tượng. Hoàn toàn ổn khi gửi tin nhắn đến con số không trong Objective-C.
synchronize
phương thức: "chỉ sử dụng phương pháp này nếu bạn không thể chờ đồng bộ hóa tự động (ví dụ: nếu ứng dụng của bạn sắp thoát)" - Tham khảo lớp NSUserDefaults
synchronize
. Tài liệu nói: CÓ nếu dữ liệu được lưu thành công vào đĩa, nếu không thì KHÔNG.
Đây là cách làm tương tự với Swift;
var valueToSave = "someValue"
NSUserDefaults.standardUserDefaults().setObject(valueToSave, forKey: "preferenceName")
Để lấy lại sau;
if let savedValue = NSUserDefaults.standardUserDefaults().stringForKey("preferenceName") {
// Do something with savedValue
}
Trong Swift 3.0
var valueToSave = "someValue"
UserDefaults.standard.set(valueToSave, forKey: "preferenceName")
if let savedValue = UserDefaults.standard.string(forKey: "preferenceName") {
}
Một cái gì đó như thế này:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
// saving an NSString
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"];
Sau đó để lấy:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
// getting an NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];
Bạn thực sự nên xem Tham khảo lớp NSUserDefaults của Apple và cũng có thể là hướng dẫn này: Hướng dẫn lập trình iPhone - Lưu / truy xuất dữ liệu bằng NSUserDefaults
Đừng quên tuyên bố này vì nếu không nó có thể không luôn luôn hoạt động:
[standardUserDefaults synchronize];
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];
Lấy
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"];
[[NSUserDefaults standardUserDefaults] setValue:aString forKey:aKey]
-(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];
}
}
Và gọi nó bằng cách:
[self saveToUserDefaults:@"string_to_store" : @"key_for_the_string"];
Lấy chuỗi bằng cách sử dụng:
NSString * stored_string = [[NSUserDefaults standardUserDefaults] stringforkey:key_for_the_String]
Lần đầu tiên xem
{
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"];
}
}
}
Hình ảnh
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
self.imaGe.image = chosenImage;
[picker dismissViewControllerAnimated:YES completion:NULL];
}
(IBAction) submitBton: (id) người gửi {
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: (id) người gửi {
UIImagePickerContoder * picker = [[UIImagePickerControll
alloc] init]; picker.delegate = tự; picker.allowsEditing = CÓ; picker.sourceType =
UIImagePickerControllSourceTypePhotoL Library; [self PresentViewCont điều khiển: bộ chọn hoạt hình: hoàn thành CÓ: NULL];
}
Chế độ xem thứ hai {NSMutableArray * mảng; }
- (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; }
Trong Swift5 và 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")
Lưu ý: Lưu dữ liệu văn bản (có nghĩa là Chuỗi, Mảng, Từ điển, v.v.) trong UserDefaults. Không lưu hình ảnh trong UserDefaults, không nên sử dụng (Lưu hình ảnh trong thư mục cục bộ).
Ở đây Đối với Swift tôi tạo hai chức năng gọi để lưu và lấy lại giá trị cho khóa từ Tùy chọn
có thể đây là sự giúp đỡ đầy đủ cho bạn
// để lưu đối tượng
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)!
}
Trong Swift 4.0.3 Xcode 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!