2014-12-08 3 views
0

StackOverflow 및 Google을 연구하고 대부분의 StackOverflow Swift 예제를 검토했지만 문제는 해결하기가 어렵습니다. 나는 TableName에 표시해야하는 userName과 userAge가있는 CoreData를 가지고 있습니다. 개체가있는 클래스를 사용해야하고 셀 구성에서 개체 이름과 나이를 참조해야한다는 것을 알고 있습니다. 있는 TableView 컨트롤러에서Swift : NSObject 배열에 추가하는 방법?

class User: NSObject { 
    var userName: String 
    var userAge: Int 
    init(userName: String, userAge: Int) { 
     self.userName = userName 
     self.userAge = userAge 
     super.init() 
    } 
} 

:

내 사용자 정의 클래스는 다음과 같이 정의된다

var users: [User] = [] 

코어 데이터 모델에서 사용자 레코드를 검색하는 논리에 의해 다음; 각 레코드에 대한 검색 :

let userDataObject = [ User(userName: userNameFromCoreData!, userAge: userAgeFromCoreData!)] 

을 내가 다음 테이블의 배열 보여줄 수 있도록 배열에 각 사용자 레코드를 추가 할 때 문제가된다

users.append(userDataObject) 

는 스위프트 컴파일러 오류를 제공을 'NSArray'는 'User'의 하위 유형이 아닙니다.

내가

var users: [AnyObject] = [] 

를 사용하는 경우 users.append (userDataObject)는 작동하지만, 그때는 배열에서 사용자 이름과 나이를 검색하는 방법을 모르겠습니다.

appName.User (appName은 실제 응용 프로그램 이름 임)로 엔티티 클래스 필드를 추가하려고 시도했지만 users.append가 여전히 같은 오류로 실패했습니다.

나는 이것이 다운 캐스팅 문제이고, 어떤 종류인지 알고 있으며, 위의 코드에서 구문 일 수 있다고 생각하지만, 생각에 가장 감사 할 것입니다.

+1

감사합니다. 클래스 코드 편집을위한 Leonardo. 다음 질문/답변에 대한 교훈. – AspiringDeveloper

답변

1

User 객체를 배열에 두지 않습니까? 대신이의

:

let userDataObject = [ User(userName: userNameFromCoreData!, userAge: userAgeFromCoreData!)] 
users.append(userDataObject) 

는이 작업을 수행 : 당신이 정말로 (예는 여러 개체를 포함하고 있기 때문에) 배열을 추가 할 경우에는 + 연산자를 사용할 수 있습니다

let userDataObject = User(userName: userNameFromCoreData!, userAge: userAgeFromCoreData!) 
users.append(userDataObject) 

users += userDataObjects 
+0

감사합니다, Matthias. 괜찮 았어. 이제 당신이 그것을 지적했다, 그것은 완벽하게 이해할 수있다. (그러나 나는 그것을 놓쳤다). 다시 한번 감사드립니다. – AspiringDeveloper