2016-12-30 3 views
0

swift 3.0을 사용하여 사용자 기본값에 객체 배열을 추가하려고합니다. 이것은 일반 UserDefault 유형 중 하나가 아니기 때문에 객체 또는 객체 배열 (어느 것이 든 작동하지 않음)이 UserDefaults에 추가 될 NSData 유형으로 파싱되어야 함을 알게되었습니다.UserDefaults에 객체 배열 저장

지금까지 내 시도는 다음 MyVariables.arrayList 객체의 배열 객체

func updateDefaults() 
{ 
    let data = NSData(data: MyVariables.arrayList) 
    UserDefaults.standard.set(data, forKey: "ArrayList") 
} 

.

마지막으로 가능한 경우 UserDefaults에서이 값을 검색하여 원래의 1 차원 개체 배열로 변환하는 방법을 알고 있어야합니다.

감사

REPOSITORY : https://github.com/Clisbo/ModularProject

+0

은 어쩌면 이것은 당신 http://stackoverflow.com/questions/29215825/how-to-store-array-list-of-custom-objects-to-nsuserdefaults –

+0

을 위해 도움이 될 것입니다? http://stackoverflow.com/questions/6696558/storing-data-to-nsuserdefaults –

+0

이 항목을 확인하십시오. http://stackoverflow.com/questions/41355427/attempt-to-insert-non-property-list-object-when trying-to-save-a-custom-object-i –

답변

0

당신은 NSUserDefaults에서 사용자 정의 배열을 저장할 수 없습니다. 그렇게하려면 NSData로 변경 한 다음 NSUserDefaults에 저장해야합니다. 코드는 다음과 같습니다. 이 시도 않았다

var custemArray: [yourArrayType] { 
    get { 
     if let data = NSUserDefaults.standardUserDefaults().objectForKey("yourKey") as? NSData { 
      let myItem = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? yourType 
     } 
    } 
    set { 
     let data =NSKeyedArchiver.archivedDataWithRootObject(yourObject); 
     NSUserDefaults.standardUserDefaults().setObject(data, forKey: "yourKey") 
     NSUserDefaults.standardUserDefaults().synchronize() 
    } 
}