2017-12-02 19 views
1

추가 할 수있는 배열을 만들고 싶습니다. UserDefaults에 저장되므로 다음에 사용자가 응용 프로그램을 열면 배열이 저장됩니다. 그래서, 난 ...UserDefaults 배열에 덧붙임 (Swift)

var intArray = UserDefaults.standard.array(forKey: "intArray") as! [Int] 

UserDefaults 배열을 만드는 방법을 알고 나는 이미 존재하는 배열에 배열을 설정하는 방법을 알고

var array = [2, 6, 34, 4, 9] 
UserDefaults.standard.set(array, forKey: "intsArray") 

, 나는 비어있는 배열이 필요합니다 그런 다음 사용자가 배열에 Ints를 추가합니다. 당신의 도움을 주셔서 감사합니다! 대신이의

답변

0

(또는 경우

var intArray = UserDefaults.standard.array(forKey: "intArray") as? [Int] ?? [] 

이 아직 디폴트 데이터베이스에 존재하지 않는 경우는 하늘의 배열로 배열을 초기화됩니다

var intArray = UserDefaults.standard.array(forKey: "intArray") as! [Int] 

이렇게 그것은 어떤 식 으로든 Int s의 배열로 해석되지 않을 것입니다.

여기에 as!의 사용을 피하는 것이 좋습니다. 그렇지 않으면 기본값이 손상되면 읽기가 중단 될 수 있기 때문에 좋은 연습입니다.

+0

처음에는 작동했지만 응용 프로그램이 닫히고 다시 열리면 어레이가 다시 빈 상태로 돌아갑니다. –

+0

@JacobCavin 뭔가를 추가 한 후 수정 된 배열을 사용자 기본값으로 다시 쓰고 있습니까? –

0

필요한 것을 알지 못합니다.

그러나 이것은 당신이 UserDefaults

UserDefaults.standard.set([Int](), forKey: "nums") 

에 빈 배열을 추가하는 방법입니다 그리고 이것은 당신이

  1. 부하 UserDefaults의 배열이
  2. 다시 저장 값
  3. 를 추가하는 방법입니다 사용자 기본 사항

.

var nums = UserDefaults.standard.array(forKey: "nums") as! [Int] 
nums.append(1) 
UserDefaults.standard.set(nums, forKey: "nums") 
0

나는이 목적을 위해 계산 된 속성을 만들 수 제안 : 당신이 intArray는 UserDefaults에 그 값을 업데이트합니다 수정할 때마다 이제

var intArray: [Int] { 
    get { 
     return UserDefaults.standard.array(forKey: "intArray") as? [Int] ?? [] 
    } 
    set { 
     UserDefaults.standard.set(newValue, forKey: "intArray") 
    } 
} 

을하고 intArray를 호출 할 때마다 그것은 당신에게 값을 반환 에서 UserDefaults.