2017-05-11 2 views
0

가 나는 사용자 모델이 있습니다영역 개체에 싱글 톤을 사용하는 방법은 무엇입니까?

class User: Object, Mappable { 
    dynamic var account: String? 
    dynamic var balabala 

    static var current: User { 
     return realm.objects(User.self) ?? User() 
    } 
} 

를하지만 오류가 발생합니다 : Instance member 'realm' cannot be used on type 'User' 어떻게 영역 객체와 싱글 톤을 사용할 수 있나요? 어떤 도움에 감사드립니다

+0

신속한 관리 대상 객체가 이미'realm' 속성을 받았기 때문에 이상하다고 생각했습니다. – EpicPandaForce

+0

그래, 정확하게이 오류가 말한 것처럼, 당신은 안에 영역 클래스의 영역 인스턴스를 만들 수 없습니다, 더 나은 옵션이 될 것입니다 1. 다른 클래스를 만들 계정 관리자의 일종 그리고 당신의 싱글 톤 넣어 2. 싱글 톤 혼자두고, 당신은 항상 기지 수 있습니다 즉, 모든 사용자에 대한 기본 ID를 만든 다음 현재 사용자를 삭제하거나 현재 사용자가 있는지 확인하십시오. –

답변

0

스위프트 컴파일러 realm가 참조 알고하지 않는 current 속성 때문에, realm라는 인스턴스 변수를 정의하지 않습니다 User 클래스입니다. 캄이 코멘트에 언급 된 당신의 싱글을 관리하기위한 별도의 클래스를 설정으로, 그렇지 않으면

try! Realm().objects(User.self) 

: 당신은 그냥 기본 영역을 사용하려면

, 당신은 그것의 새로운 인스턴스를 초기화해야 영역을 선택하고 대신 해당 클래스에서 영역을 가져옵니다.

+0

나는 영역을 전역 변수로 정의했습니다. let realm = try! 영역()' –

+0

좋습니다. 알아두면 좋습니다. 이것은 Swift의 많은 끔찍한 오류 메시지 중 하나입니다. 진짜 문제는 다음과 같습니다 :'realm.objects (User.self)'는 결과가 '을 리턴합니다. 코드를'realm.objects (User.self) .first ??로 변경해야합니다. User()', 그렇지 않으면 유형이 일치하지 않으며 Swift의 유형 검사기가 혼란스러워집니다. – AustinZ

+0

죄송합니다. 작동하지 않습니다. 같은 오류가 발생했습니다. –

관련 문제