2017-03-26 5 views
-2

나는 3 일 동안이 작업을 해왔고 주말을 거의 잃어 버렸기 때문에 도움을 주셔서 감사합니다.제대로 인스턴스화하는 방법

저는 인스턴스화하지 않는다고 말하고 있습니다. 어떻게 작동하는지 확신 할 수는 없지만 온라인으로 읽었지만 특정 코드와 관련이있는 예제를보고 싶습니다.

var myDataSource: Array<Dictionary<String,Any>>! 

그런 다음 첫 화면에 내가위한 myDataSource에 사용자 이름 (사전의 내 배열)를 캡처 할 : 응용 프로그램의 위임에

나는이 있습니다. 나는 이것을 시도 : 내가 틀렸다면

class UserInfoViewController: UIViewController { 
    @IBOutlet weak var firstName: UITextField! 
    var userName: String? 

    @IBAction func submitName(_ sender: UITextField) { 
     userName = firstName.text 
     if userName != nil { 
      let saveName: [String: Int] = ["userName!": 0] 
      myDataSource.append(saveName) 
      print(firstName) 
     } 
    } 

내가 변수를 풀기에 대한 지식을 가지고,하지만 난이 인스턴스화과 관련이있다 생각 말해주십시오.

+1

FYI - 간단한 구문 사용 : var myDataSource : [[String : Any]]! – rmaddy

+0

Maddy와 동의하지 않습니다. 당신이 참조한 질문이 어떻게 사전 사용법에 관한 나의 질문에 답하는지를 보아라. 나는 당신이 온라인으로 참조한 것과 같은 것을 보았다. 그러나 내가 가지고있는 이슈에 그것이 의미하는 것을 연결할 수 없다. 그래서 나는 질문을하기로 결정했다. 내 특정 변수 및 내 특정 코드 예제 (응용 프로그램 대리자 사용). –

+0

이 링크는 필자가 필요로하는 것에 더 가깝다고 생각하지만 코드를 작성할 때 작동하지 않습니다 ... http://stackoverflow.com/questions/28410218/how-to-create-an-array-of -dictionaries –

답변

1

myDataSource는 선택 사항입니다. 인스턴스화하지 않으므로 무언가를 추가하려고 할 때 당연히 무의미합니다. 배열에 뭔가를 추가하기 전에 즉시 인스턴스를 생성하거나 nil을 확인해야합니다.

+0

이 답변에 감사드립니다 프레드릭, 그것은 rmaddy가 제공 한 것보다 훨씬 더 도움이됩니다. 나는 if 문과 함께 nil을 검사했다고 생각했다. 또한 인스턴스화하지 않는다는 것은 무엇을 의미합니까? –

+0

userName은 nil이 아니며 nil 인 데이터 소스입니다. 넌 넣어! 다음과 같이 선언문의 끝에 :'var myDataSource : Array >! "이봐 요, 여기에 가치가있을 것입니다,하지만 지금은 아닙니다"를 의미합니다. !를 교체하면! with()를 사용하면 배열이 즉시 비어있는 것으로 인스턴스화되어 문제가 해결됩니다. – Frederik

+0

정말 고마워요! –