NSUserDefaults에 NSMutablearray를 저장하는 방법
두 개 있어요 NSMutableArray
. 이미지 또는 텍스트로 구성됩니다. 어레이는 UITableView
. 앱을 종료하면 내부의 데이터 UITableView
가 축소 됩니다. UITableView
사용하여 배열을 저장하는 방법은 NSUserDefault
무엇입니까?
참고 : NSUserDefaults는 항상 전달한 개체의 변경이 불가능한 버전을 반환합니다.
정보를 저장 비용 :
// Get the standardUserDefaults object, store your UITableView data array against a key, synchronize the defaults
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:arrayOfImage forKey:@"tableViewDataImage"];
[userDefaults setObject:arrayOfText forKey:@"tableViewDataText"];
[userDefaults synchronize];
정보를 검색 광고 :
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSArray *arrayOfImages = [userDefaults objectForKey:@"tableViewDataImage"];
NSArray *arrayOfText = [userDefaults objectForKey:@"tableViewDataText"];
// Use 'yourArray' to repopulate your UITableView
-th로드에서 첫 다시에서 오는 결과 여부를 확인 NSUserDefaults
이며 nil
,이 경우, 당신은의 당신 데이터를 생성해야 우리합니다 오는가 않으면에서 데이터를로드 NSUserDefaults
하여 UITableView
상태를 유지합니다.
최신 정보
Swift-3에서는 다음 접근 방식을 사용할 수 있습니다.
let userDefaults = UserDefaults.standard
userDefaults.set(arrayOfImage, forKey:"tableViewDataImage")
userDefaults.set(arrayOfText, forKey:"tableViewDataText")
userDefaults.synchronize()
var arrayOfImages = userDefaults.object(forKey: "tableViewDataImage")
var arrayOfText = userDefaults.object(forKey: "tableViewDataText")
다음과 같이 가변 배열을 사용할 수 있습니다.
[[NSUserDefaults standardUserDefaults] setObject:yourArray forKey:@"YourKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
나중에 사용자 언어에서 변경 가능한 배열을 다시 가져옵니다. 나중에 배열을 편집하려는 경우 변경 가능한 복사본을 얻는 것이 중요합니다.
NSMutableArray *yourArray = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"YourKey"] mutableCopy];
그런 다음 델리게이트 UITableview
를 통해 다양한 배열 의 데이터를 설정하기 만하면됩니다.UITableView
도움이 되셨기를 바랍니다!
NSUserDefault
애플에보고 된 문서대로 저장하려는 object-가 다음을 준수해야 우리 한다는 다른 답변에 추가하고 싶습니다 .
"값 매개 변수는 될 수있는 속성 목록 객체 : NSData
, NSString
, NSNumber
...있는 NSArray를하고있는 NSDictionary와 객체를 들어,있는있는 NSDate가있는 NSArray를, 또는 NSDictionary와와는 그 내용이 프로퍼티리스트 객체해야"
여기 속성 목록 프로그래밍 가이드에 대한 링크
그래서 당신의 배열 안에 무엇이 있는지에 주목하십시오
저장 :
NSUserDefaults.standardUserDefaults().setObject(PickedArray, forKey: "myArray")
NSUserDefaults.standardUserDefaults().synchronize()
검색 :
if let PickedArray = NSUserDefaults.standardUserDefaults().stringForKey("myArray") {
print("SUCCCESS:")
println(PickedArray)
}
정말 속성 목록에 이미지를 저장 하시겠습니까? 이미지를 파일에 저장하고 파일 이름을 NSDictionary
.
저장소 파일의 경로 정의
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
self.basePath = [paths firstObject];
이미지 저장 및로드 :
- (NSString *)imageWithKey:(NSString)key {
NSString *fileName = [NSString stringWithFormat:@"%@.png", key]
return [self.basePath stringByAppendingPathComponent:fileName];
}
- (void)saveImage:(UIImage *)image withKey:(NSString)key {
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:[self imageWithKey:key] atomically:YES];
}
- (UIImage *)loadImageWithKey:(NSString)key { {
return [UIImage imageWithContentsOfFile:[self imageWithKey:key]];
}
그리고 경로 또는 색인을 사용할 수 있습니다. NSMutableDictionary
- (void)saveDictionary:(NSDictionary *)dictionary {
NSMutableDictionary *dictForSave = [@{ } mutableCopy];
for (NSString *key in [dictionary allKeys]) {
[self saveImageWithKey:key];
dictForSave[key] = @{ @"image" : key };
}
[[NSUserDefaults standardUserDefaults] setObject:dictForSave forKey:@"MyDict"];
}
- (NSMutableDictionary *)loadDictionary:(NSDictionary *)dictionary {
NSDictionary *loadedDict = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyDict"];
NSMutableDictionary *result = [@{ } mutableCopy];
for (NSString *key in [loadedDict allKeys]) {
result[key] = [self imageWithKey:key];
}
return result;
}
에서 NSUserDefaults
당신은 단순히 저장과 같은 object-수 NSString
, NSDictionary
, NSNumber
, NSArray
.
또한 NSKeyedArchiver/NSKeyedUnarchiver
NSCoding 프로토콜을 준수하는 클래스를 만들 수 있습니다 .
NSMutableArray
개미 순서에 특정 문자열을 추가해야 우리 하거나 NSMutableArray
A의 UITableView
를 사용하는 경우 대신 다음을 사용할 수 있습니다 .
[NSMutableArray insertObject:string atIndex:0];
Swift 3에서 NSMutableArray의 경우 배열을 인코딩 / 사용해야 NSUserDefaults에서 저장 / 검색 할 수 있습니다.
절약
//Encoding array
let encodedArray : NSData = NSKeyedArchiver.archivedData(withRootObject: myMutableArray) as NSData
//Saving
let defaults = UserDefaults.standard
defaults.setValue(encodedArray, forKey:"myKey")
defaults.synchronize()
검색 중
//Getting user defaults
let defaults = UserDefaults.standard
//Checking if the data exists
if defaults.data(forKey: "myKey") != nil {
//Getting Encoded Array
let encodedArray = defaults.data(forKey: "myKey")
//Decoding the Array
let decodedArray = NSKeyedUnarchiver.unarchiveObject(with: encodedArray!) as! [String]
}
풀이
//Getting user defaults
let defaults = UserDefaults.standard
//Checking if the data exists
if defaults.data(forKey: "myKey") != nil {
//Removing the Data
defaults.removeObject(forKey: "myKey")
}
NSUserdefaults
키로 배열 정보를 저장합니다 .
"JSON 응답에서 수신 된 MutableArray"
[[NSUserDefaults standardUserDefaults] setObject:statuses forKey:@"arrayListing"];
"이 정보 (배열)를 프로젝트의 어느 곳에서나 동일한 키로 검색"
NSArray *arrayList = [[NSUserDefaults standardUserDefaults] valueForKey:@"arrayListing"];
이것은 내 프로젝트와 희망에서 나를 도왔고 누군가를 도울 것입니다.
Swift 버전 :
NSUserDefaults에 어레이 저장 :
NSUserDefaults.standardUserDefaults().setObject(selection, forKey: "genderFiltersSelection")
NSUserDefaults에서 부울 배열 검색 :
if NSUserDefaults.standardUserDefaults().objectForKey("genderFiltersSelection") != nil{
selection = NSUserDefaults.standardUserDefaults().objectForKey("genderFiltersSelection") as? [Bool] ?? [Bool]()
}
NSUserDefaults에서 문자열 배열 검색 :
if NSUserDefaults.standardUserDefaults().objectForKey("genderFiltersSelection") != nil{
selection = NSUserDefaults.standardUserDefaults().objectForKey("genderFiltersSelection") as? [String] ?? [String]()
}
참고 URL : https://stackoverflow.com/questions/19634426/how-to-save-nsmutablearray-in-nsuserdefaults
'ProgramingTip' 카테고리의 다른 글
편집 할 수 없어야하는 EditText 안에 상수 텍스트 삽입 -Android (0) | 2020.11.29 |
---|---|
R에서 각각 고유 한 색상으로 여러 선 (데이터 시리즈) 플로팅 (0) | 2020.11.29 |
mysql 함수의 영숫자 텍스트에서 선행 0을 자르는 방법 (0) | 2020.11.29 |
동일한 파일에 여러 클래스를 사용하는 것이 나쁜 습관입니까? (0) | 2020.11.29 |
작업 표시 줄 상단에 Windows Form을 전체 화면으로 표시하는 방법은 무엇입니까? (0) | 2020.11.29 |