[NSObject : AnyObject] 유형의 사전에 "value (forKeyPath : ...)"멤버가 없습니다.

필립 V.

앱을 swift3로 변환하고 다음과 같은 문제가 발생합니다.

@objc required init(response: HTTPURLResponse, representation: [NSObject : AnyObject])
{
    if (representation.value(forKeyPath: "title") is String)    {
        self.title = **representation.value**(forKeyPath: "title") as! String
    }

다음과 같은 오류가 발생합니다.

[NSObject : AnyObject] 유형의 값에는 멤버 값이 없습니다.

이전 버전의 코드에서는 AnyObject를 표현 유형으로 사용했지만 그렇게하면 오류 AnyObject is not a subtype of NSObject발생 합니다.

if (representation.value(forKeyPath: "foo") is String) {
    let elementObj = Element(response: response, representation:**representation.value(forKeyPath: "foo")**!)
}
BaseZen

Objective-C와 Swift 스타일을 혼합하고 있습니다. 실제로 결정하는 것이 좋습니다.

다시 브리징 NSDictionary은 자동이 아닙니다.

중히 여기다:

let y: [NSObject: AnyObject] = ["foo" as NSString: 3 as AnyObject] // this is awkward, mixing Swift Dictionary with explicit types yet using an Obj-C type inside
let z: NSDictionary = ["foo": 3]
(y as NSDictionary).value(forKeyPath: "foo") // 3
// y["foo"] // error, y's keys are explicitly typed as NSObject; reverse bridging String -> NSObject/NSString is not automatic
y["foo" as NSString] // 3
y["foo" as NSString] is Int // true
z["foo"] // Bridging here is automatic though because NSDictionary is untyped leaving compiler freedom to adapt your values
z["foo"] is Int // true
// y.value // error, not defined

// Easiest of all:
let ynot = ["foo": 3]
ynot["foo"] // Introductory swift, no casting needed
ynot["foo"] is Int // Error, type is known at compile time

참고:

https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html

'as'String돌아가 려면를 명시 적으로 사용해야 합니다 NSString. 브리징은 String참조 유형 ( NSString) 보다 값 유형 ( ) 을 사용하기를 원하기 때문에 숨겨지지 않습니다 . 따라서 이것은 의도적으로 더 번거 롭습니다.

참조 유형에 비해 값 유형의 주요 장점 중 하나는 코드에 대해 더 쉽게 추론 할 수 있다는 것입니다. 값 유형에 대한 자세한 내용은 Swift 프로그래밍 언어 (Swift 3)의 클래스 및 구조 및 WWDC 2015 세션 414 Swift에서 값 유형으로 더 나은 앱 빌드를 참조하세요.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Swift 2.2 : 'Element'유형의 값 ( 'AnyObject'라고도 함)에 'objectID'멤버가 없습니다.

분류에서Dev

[AnyObject] 유형의 변경 불가능한 값에는 'removeAtIndex'라는 이름의 변경 멤버 만 있습니다.

분류에서Dev

다음 유형의 사전에 UInt64를 추가 할 수 없습니다. [String : AnyObject?]

분류에서Dev

Swift 1.2 [AnyObject]에 'objectForKey'라는 멤버가 없습니다.

분류에서Dev

String : NSObject 유형의 값을 String : NSObject 유형에 할당 할 수 없습니다.

분류에서Dev

swift- '(AnyObject)'는 'NSObject'의 하위 유형이 아닙니다.

분류에서Dev

스위프트-[NSObject : AnyObject]! ' 'Dictionary <String, AnyObject>의 하위 유형이 아닙니다.

분류에서Dev

NSMutableDictionary 유형의 값을 예상 인수 유형 '[NSObject : AnyObject]?'로 변환 할 수 없습니다.

분류에서Dev

'NSObject-> ()-> PostFeed'유형의 값을 예상 인수 유형 'AnyObject?'로 변환 할 수 없습니다.

분류에서Dev

'NSObject-> ()-> ViewController'유형의 값을 예상 인수 유형 'AnyObject?'로 변환 할 수 없습니다.

분류에서Dev

'UIView'유형의 값에 'constant'멤버가 없습니다.

분류에서Dev

'GIDSignIn'유형의 값에 'signInSilently'멤버가 없습니다.

분류에서Dev

'[Course]'유형의 SwfitUI-Value에 'identified'멤버가 없습니다.

분류에서Dev

''유형의 값에 ''멤버가 없습니다.

분류에서Dev

'Tags'유형의 값에 'lastUsed'멤버가 없습니다.

분류에서Dev

'AuthDataResult'유형의 값에 'providerID'멤버가 없습니다.

분류에서Dev

Firebase / Firestore : 'DocumentReference'유형의 값에 'get'멤버가 없습니다.

분류에서Dev

"[String : String]"유형의 값에 'major'멤버가 없습니다.

분류에서Dev

"[String : String]"유형의 값에 'major'멤버가 없습니다.

분류에서Dev

'Set <UITouch>'유형의 값에 'allObjects'멤버가 없습니다.

분류에서Dev

'FIRDatabaseReference'의 값 유형에 'observeSingleEvent'멤버가 없습니다.

분류에서Dev

'UIImageView'유형의 값에 'fadeIn'멤버가 없습니다.

분류에서Dev

'StorageReference'유형의 값에 'data'멤버가 없습니다.

분류에서Dev

'UITableViewCell'유형의 값에 멤버가 없습니다.

분류에서Dev

''유형의 값에 ''멤버가 없습니다.

분류에서Dev

NSObject 클래스의 유형에 인스턴스 멤버를 사용할 수 없음

분류에서Dev

[x] 유형의 SwiftUI 값에는 [y] 멤버가 없지만 구조체에 멤버가 있습니다.

분류에서Dev

GooglePlaces Cocoapod 3.3.7에 'GMSPlace'유형의 값에 'viewport'멤버가 없습니다.

분류에서Dev

SwiftUI : 'some view'유형의 값에는 'presentation'멤버가 없습니다.

Related 관련 기사

  1. 1

    Swift 2.2 : 'Element'유형의 값 ( 'AnyObject'라고도 함)에 'objectID'멤버가 없습니다.

  2. 2

    [AnyObject] 유형의 변경 불가능한 값에는 'removeAtIndex'라는 이름의 변경 멤버 만 있습니다.

  3. 3

    다음 유형의 사전에 UInt64를 추가 할 수 없습니다. [String : AnyObject?]

  4. 4

    Swift 1.2 [AnyObject]에 'objectForKey'라는 멤버가 없습니다.

  5. 5

    String : NSObject 유형의 값을 String : NSObject 유형에 할당 할 수 없습니다.

  6. 6

    swift- '(AnyObject)'는 'NSObject'의 하위 유형이 아닙니다.

  7. 7

    스위프트-[NSObject : AnyObject]! ' 'Dictionary <String, AnyObject>의 하위 유형이 아닙니다.

  8. 8

    NSMutableDictionary 유형의 값을 예상 인수 유형 '[NSObject : AnyObject]?'로 변환 할 수 없습니다.

  9. 9

    'NSObject-> ()-> PostFeed'유형의 값을 예상 인수 유형 'AnyObject?'로 변환 할 수 없습니다.

  10. 10

    'NSObject-> ()-> ViewController'유형의 값을 예상 인수 유형 'AnyObject?'로 변환 할 수 없습니다.

  11. 11

    'UIView'유형의 값에 'constant'멤버가 없습니다.

  12. 12

    'GIDSignIn'유형의 값에 'signInSilently'멤버가 없습니다.

  13. 13

    '[Course]'유형의 SwfitUI-Value에 'identified'멤버가 없습니다.

  14. 14

    ''유형의 값에 ''멤버가 없습니다.

  15. 15

    'Tags'유형의 값에 'lastUsed'멤버가 없습니다.

  16. 16

    'AuthDataResult'유형의 값에 'providerID'멤버가 없습니다.

  17. 17

    Firebase / Firestore : 'DocumentReference'유형의 값에 'get'멤버가 없습니다.

  18. 18

    "[String : String]"유형의 값에 'major'멤버가 없습니다.

  19. 19

    "[String : String]"유형의 값에 'major'멤버가 없습니다.

  20. 20

    'Set <UITouch>'유형의 값에 'allObjects'멤버가 없습니다.

  21. 21

    'FIRDatabaseReference'의 값 유형에 'observeSingleEvent'멤버가 없습니다.

  22. 22

    'UIImageView'유형의 값에 'fadeIn'멤버가 없습니다.

  23. 23

    'StorageReference'유형의 값에 'data'멤버가 없습니다.

  24. 24

    'UITableViewCell'유형의 값에 멤버가 없습니다.

  25. 25

    ''유형의 값에 ''멤버가 없습니다.

  26. 26

    NSObject 클래스의 유형에 인스턴스 멤버를 사용할 수 없음

  27. 27

    [x] 유형의 SwiftUI 값에는 [y] 멤버가 없지만 구조체에 멤버가 있습니다.

  28. 28

    GooglePlaces Cocoapod 3.3.7에 'GMSPlace'유형의 값에 'viewport'멤버가 없습니다.

  29. 29

    SwiftUI : 'some view'유형의 값에는 'presentation'멤버가 없습니다.

뜨겁다태그

보관