我在使用AWS SDK iOS v2.1.1以編程方式啓用對現有存儲桶的版本控制時遇到問題。錯誤是-[NSNull _fastCharacterContents]: unrecognized selector sent to instance ...
。我的代碼片段創建執行該putBucketVersioning
方法的錯誤結果:以編程方式在AWS S3上啓用版本控制
AWSS3VersioningConfiguration *conf = [AWSS3VersioningConfiguration new];
conf.status = AWSS3BucketVersioningStatusEnabled;
AWSS3PutBucketVersioningRequest *versionRequest = [AWSS3PutBucketVersioningRequest new];
versionRequest.bucket = createBucketReq.bucket;
versionRequest.versioningConfiguration = conf;
[[[AWSS3 S3ForKey:key] putBucketVersioning:versionRequest] continueWithBlock:^id(BFTask *task) {
return task;
}
我可能缺少我如何創建AWSS3PutBucketVersioningRequest
請求的自變量,但我不能找到任何實例或文件,將點我正確的方向。 Java,Cocoa或Swift中的任何建議都非常受歡迎。歡呼聲中,特龍
UPDATE:
根據意見,我包括完整的方法和已經啓用AWSLogging詳細的錯誤後輸出。
-(BFTask*) enableVersioningOfBucket:(NSString*)bucket region:(NSInteger) region {
[self setupCredentialsForRegion:region];
NSString *key = [NSString stringWithFormat:@"regionkey%li",region];
AWSS3VersioningConfiguration *conf = [AWSS3VersioningConfiguration new];
conf.status = AWSS3BucketVersioningStatusEnabled;
AWSS3PutBucketVersioningRequest *versionRequest = [AWSS3PutBucketVersioningRequest new];
versionRequest.bucket = bucket;
versionRequest.versioningConfiguration = conf;
NSLog(@"Config %@",versionRequest);
return [[[AWSS3 S3ForKey:key] putBucketVersioning:versionRequest] continueWithBlock:^id(BFTask *task) {
NSLog(@"Put bucket versioning %@ - %@", task, task.result);
return task;
}];
}
日誌信息:
2015-06-06 12:09:41.822 connectS3[50137:6337899] Config <AWSS3PutBucketVersioningRequest: 0x600000082350> {
bucket = testbucket;
versioningConfiguration = "<AWSS3VersioningConfiguration: 0x600000024bc0> {\n MFADelete = 0;\n status = 1;\n}";}
2015-06-06 12:09:41.832 connectS3[50137:6337899] -[NSNull _fastCharacterContents]: unrecognized selector sent to instance 0x7fff7724c210
更新2
下面的圖像示出了堆棧跟蹤作爲錯誤信息剛剛出現當我使用斷點和步驟進入每個方法調用。
更新3 我安裝我的憑據,如下所述。除了啓用版本控制之外,這對我與S3連接的所有其他方法都正常工作。
AWSStaticCredentialsProvider *credentialsProvider = [[AWSStaticCredentialsProvider alloc ]
initWithAccessKey:keychainStore[ACCESS_KEY_ID]
secretKey:keychainStore[SECRET_KEY]];
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:region
credentialsProvider:credentialsProvider];
/* One credential configuration for each region **/
NSString *key = [NSString stringWithFormat:@"regionkey%li",region];
[AWSS3 registerS3WithConfiguration:configuration forKey:key];
/* Default credentialsProvider **/
[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;
感謝您的幫助!
你應該[啓用](http://docs.aws.amazon.com/mobile/sdkforios/developerguide/setup .html#logging)詳細日誌併發布日誌。 (請刪除日誌中的所有敏感信息。)另外,是否可以包含異常的堆棧跟蹤? –
@YosukeMatsuda感謝您的評論。我已經添加了一些更多的細節。 –
'AWSS3'的實例可能構建不正確。你可以分享你如何配置服務客戶端(你調用'+ registerS3WithConfiguration:forKey:'的部分)嗎? –