繁体   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