2016-07-28 82 views
0

我正在嘗試使用Swift對AWS和DynamoDB執行簡單的表掃描。我是蘋果編程的新手,不確定問題是什麼。 AWS SDK的文檔都是客觀的C,AWS給Swift的例子都是垃圾。DynamoDB Swift Table掃描映射類

我得到的最好的信息是來自一個問題,所以我一直試圖通過它。

Best way to make Amazon AWS DynamoDB queries using Swift?

有太多的錯誤了一個問題,所以我將它分解成多個問題:

我試圖做的第一部分是我的類項目從數據庫「定義的映射項目」

我寫我的代碼和我得到的每一行下面以粗體顯示的錯誤:

class Item : NSObject, AWSDynamoDBModel, AWSDynamoDBModeling { 

'項目' 不符合協議 'AWSDynamoDBModeling'

 var Artist    : String = "" 
     var SongTitle   : String = "" 
     var AlbumTitle   : String = "" 
     var Category   : String = "" 
     var PictureURL   : String = "" 
     var SongURL    : String = "" 
     var Location   : String = "" 
     var AVGMusicianRating : Int = 0 
     var AVGUserRating  : Int = 0 
     var SongDuration  : Int = 0 
     var SongID    : Int = 0 

     override init!() { super.init() } 

Failable初始化爲 'init()' 無法重寫非failable初始化

 required init!(coder: NSCoder!) { 
      fatalError("init(coder:) has not been implemented") 
     } 

     class func dynamoDBTableName() -> String! { 
      return "Songs" 
     } 
     class func hashKeyAttribute() -> Int! { 
      return SongID 
     } 

實例成員 'SongID' 不能用於'Item'類型(我的散列鍵是一個int不是字符串)

 //required to let DynamoDB Mapper create instances of this class 
     override init(dictionary dictionaryValue: [NSObject : AnyObject]!, error: NSErrorPointer) 

初始化程序不自其超提前重寫指定初始化

 { 
       super.init(dictionary: dictionaryValue, error: error) 
      } 

      //workaround to possible XCode 6.1 Bug : "Type NotificationAck" does not conform to protocol "NSObjectProtocol" 
      override func isEqual(anObject: AnyObject?) -> Bool { 
       return super.isEqual(anObject) 
      } 

     } 

感謝。

回答

1

1 '項目' 不符合協議 'AWSDynamoDBModeling'

更換

class func hashKeyAttribute() -> Int! { 
    return SongID 
} 

通過

class func hashKeyAttribute() -> String! { 
    return "SongID" 
} 

說明:您需要提供hashkey的名字屬性,而不是類型。該協議要求您返回一個字符串。

2. Failable初始化爲 'init()' 無法重寫非failable 初始化

沒有必要延長NSObject的。您可以從代碼中刪除所有init(..)方法。據我所知,他們並不需要。

3實例成員「SongID」不能在類型「項」使用(我的散列關鍵字 是一個int不串)

當你修正錯誤1這將消失。

4.初始化程序不從 超

當你修正錯誤2

我寫了一個關於tutorial使用DynamoDB的斯威夫特應用程序會隨風而逝覆蓋一個指定初始化。 Part 3包含映射到DynamoDB的AMZUser類的簡單示例

+0

感謝您的幫助,這確實回答了我問的問題。我已經嘗試使用你的教程,但不幸的是我必須做一個全表掃描。所以我不得不回過頭來研究如何以客觀的方式做到這一點。對於這樣一家大公司,您會認爲AWS可以編制與當前標準相關的文檔。 –