ios - 无法使用 XCode 7.0 Beta、iOS 8.3 和 aws-ios-sdk-2.2.0 识别 AWSDynamoDB

标签 ios swift amazon-web-services amazon-dynamodb xcode7

我正在匹配在 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

Best way to make Amazon AWS DynamoDB queries using Swift?

我已经让它可以在 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 文件夹,删除项目->信息->配置中的配置集,然后重新安装 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 的上传示例项目示例的 swift 文件:

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 入门部分的第四点说:“在应用程序委托(delegate)中导入 AWSCore header ”:

#import <AWSCore/AWSCore.h>

无法完成,只能在第 2 点提到的 bridging.h 文件中完成。

我的第一个协助请求是修复提到的错误并使项目识别 AWSDynamoDB 框架。 然后,我请求您提供有关不同教程合并的任何观察结果,以及比上述内容更清晰的任何其他在线教程或指南。

最佳答案

如果您将 CocoaPods (0.36) 与“use_frameworks!”一起使用,此答案可能会解决您的问题:

“通常,当您将 Objective-C 代码导入 Swift 时,您会通过将包含该代码的文件的 header 包含在项目的“桥接 header ”中来实现。这确实是您从静态库(你的 pod 曾经是它。)

但这不是从框架导入 Objective-C 代码的方式。为此,您只需输入...

import Framework

...在使用 Objective-C 类的 Swift 文件中(其中“Framework”是包含该类的实际框架的名称。)”

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

关于ios - 无法使用 XCode 7.0 Beta、iOS 8.3 和 aws-ios-sdk-2.2.0 识别 AWSDynamoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31284039/

相关文章:

ios - 如何在一周中的特定日期重复本地通知 (iOS Swift 3)

amazon-web-services - 停止AWS RDS实例以避免付款

ios - Xcode 4.6 中 UISegmentedControl 的本地化中断

objective-c - 核心数据 : DELETE WHERE

ios - LNPopupController 和 Tableviewcell 滑动

ios - objective-c 和 swift 中 NSDate 的大小是多少

c++ - 使用 aws-cpp-sdk 将 avi 文件上传到 AWS S3

node.js - Nodejs 连接到 AWS ElasticCache 复制组

ios - 使在 extern "C" block 中定义的类能够引用外部方法

ios - UIImage drawInRect