簡體   English   中英

無法識別具有XCode 7.0 Beta,iOS 8.3和aws-ios-sdk-2.2.0的AWSDynamoDB

[英]Failed to recognize AWSDynamoDB with XCode 7.0 Beta, iOS 8.3, and aws-ios-sdk-2.2.0

我正在匹配在XCode 7.0 Beta中使用Swift 2在測試項目中使用AWSDynamoDB的指南。 我需要使用該平台而不是以前的穩定平台並使其正常工作。

我正在使用以下鏈接:

https://docs.aws.amazon.com/mobile/sdkforios/developerguide/setup.html

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LoadData_Java.html

使用Swift進行Amazon AWS DynamoDB查詢的最佳方法?

我已經使其能夠用於將文本文件和圖像讀取和寫入S3存儲桶,但是現在我嘗試使用DynamoDB服務,可能會丟失某些內容。

這是我的Podfile內容:

# Uncomment this line to define a global platform for your project
platform :ios, '8.3'
target 'AWSSDKTest' do
    source 'https://github.com/CocoaPods/Specs.git'
    pod 'AWSCore'
    pod 'AWSAutoScaling'
    pod 'AWSCloudWatch'
    pod 'AWSDynamoDB'
    pod 'AWSEC2'
    pod 'AWSElasticLoadBalancing'
    pod 'AWSKinesis'
    pod 'AWSLambda'
    pod 'AWSMachineLearning'
    pod 'AWSMobileAnalytics'
    pod 'AWSS3'
    pod 'AWSSES'
    pod 'AWSSimpleDB'
    pod 'AWSSNS'
    pod 'AWSSQS'
    pod 'AWSCognito'
end
target 'AWSSDKTestTests' do
end

我必須刪除Podfile.lock和Pods文件夾,刪除Project-> Info-> Configurations中的配置集,然后再次安裝Pod。 這是我的bridging.h文件:

#ifndef AWSSDKTest_bridging_h
#define AWSSDKTest_bridging_h
#endif
#import <AWSCore/AWSCore.h>
#import <AWSS3/AWSS3.h>
#import <AWSDynamoDB/AWSDynamoDB.h>
#import <AWSSQS/AWSSQS.h>
#import <AWSSNS/AWSSNS.h>
#import <AWSCognito/AWSCognito.h>

我下載了aws-ios-sdk-2.2.0.zip文件,將其解壓縮並添加到所有AWS框架的Frameworks中。

我正在嘗試使用AWSDynamoDBModel,這是一個用於實現使用DynamoDB Mapper的Upload Sample Items Example的快速文件:

import Foundation
class Forum : AWSDynamoDBModel, AWSDynamoDBModeling {
    var name : String = ""
    var category : String = ""
    var threads : Int = 0
    var messages : Int = 0
    var views : Int = 0
    // override init!() { super.init() }
    required init!(coder: NSCoder!) {
        fatalError("init(coder:) has not been implemented")
    }
    class func dynamoDBTableName() -> String! {
        return "Demo"
    }
    class func hashKeyAttribute() -> String! {
        return "email"
    }
    class func rangeKeyAttribute() -> String! {
        return "date"
    }
    /*
    override init(dictionary dictionaryValue: [NSObject : AnyObject]!, error: NSErrorPointer) {
        super.init(dictionary: dictionaryValue, error: error)
    }
    override func isEqual(anObject: AnyObject?) -> Bool {
        return super.isEqual(anObject)
    }
    */
}

我不得不評論導致錯誤的行,因為這些行可能已修復。 這些錯誤提到無法覆蓋這些函數,並且無法在根方法內調用super.init。

再次清洗並構建后,錯誤出現在類聲明行

class Forum : AWSDynamoDBModel, AWSDynamoDBModeling {

錯誤消息:使用未聲明的類型'AWSDynamoDBModel'如果我嘗試編寫其他AWSDynamoDB類,則它們不會出現在建議列表中,然后導致相同的錯誤。

另外,我想提到的是,在開發人員指南設置(上面的第一鏈接)中,Swift入門部分的第四點說:“在應用程序委托中導入AWSCore標頭”:

#import <AWSCore/AWSCore.h>

僅在第二點提到的bridging.h文件中,這是無法完成的。

我的第一個幫助請求是修復提到的錯誤,並使項目識別AWSDynamoDB框架。 然后,請您提供幫助,以獲取有關不同教程合並的任何觀察結果,以及比所提及的內容更清晰的任何其他在線教程或指南。

如果您將CocoaPods(0.36)與“ use_frameworks!”一起使用,此答案可能會解決您的問題:

“通常,在將Objective-C代碼導入Swift時,您可以通過在項目的“ Bridging Header”中包含包含該代碼的文件的標頭來實現。這的確是從靜態庫中包含代碼的方式(您的吊艙曾經是。)

但這不是從Framework導入Objective-C代碼的方式。 為此,您只需鍵入...

import Framework

…在使用Objective-C類的Swift文件中(其中“框架”是包含該類的實際框架的名稱。)”

來源: http//rogueleaderr.com/post/115372471213/unresolved-identifier-in-swift-when-importing

我認為問題與Xcode7Beta無關,而與項目的安裝過程有關。 (我的示例DynamoDB項目在Xcode7Beta下運行良好。)

如果您通過cocoapods安裝了AWS Mobile SDK,則無需擔心橋接文件,也無需下載aws-ios-sdk-2.2.0.zip文件,因為cocoapods已經為您完成了一切。

我的建議是:

  1. 清理您的項目,刪除所有與aws相關的框架,橋接您手動添加的文件,刪除Podfile.lock和Pods文件夾以及AWSSDKTest.xcworkspace文件,然后通過運行“ pod install”重新集成Pod

  2. 使用Xcode 6.4打開您的項目,確認它可以在Xcode 6下構建並成功運行。

  3. 如果通過Xcode 6一切正常,請通過Xcode7Beta重新打開它,如果編譯失敗,請發布錯誤輸出,以便我看看。

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM