Использовать UNAVAILABLE_ATTRIBUTE
отменить метод init
и реализовать initPrivate
+ (instancetype)shareInstance;
- (instancetype)init UNAVAILABLE_ATTRIBUTE;
+ (instancetype)new UNAVAILABLE_ATTRIBUTE;
реализовать
+ (instancetype)shareInstance {
static MyClass *shareInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shareInstance = [[super allocWithZone:NULL] initPrivate];
});
return shareInstance;
}
- (instancetype)initPrivate {
self = [super init];
if (self) {
}
return self;
}
// MARK: Rewrite
+ (id)allocWithZone:(struct _NSZone *)zone {
return [MyClass shareInstance];
}
- (id)copyWithZone:(NSZone *)zone
{
return self;
}
Я просто использовал замечательный Консольный рекордер для AWS - Chrome Web Store для генерации шаблона и получил:
AWSTemplateFormatVersion: "2010-09-09"
Resources:
dynamodb1a42db5:
Type: "AWS::DynamoDB::Table"
Properties:
TableName: "test-env-wb-portal-roles"
BillingMode: "PROVISIONED"
KeySchema:
-
AttributeName: "name"
KeyType: "HASH"
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
SSESpecification:
Enabled: false
Кажется, что KeySchema
- это список словарей, которая должна быть отделена от значений словаря.
См. Примеры кода YAML: AWS :: DynamoDB :: Table - AWS CloudFormation
Я думаю, что настоящей проблемой было отсутствующее свойство ProvisionedThroughput .
Документ AWS говорит, что ProvisionedThroughput требуется, если вы установили BillingMode как PROVISIONED (это также значение по умолчанию для BillingMode)
Когда вы использовали Консольный рекордер для AWS - Chrome Web Store , аддон также генерировал свойство ProvisionedThroughput.
Итак, этот код верен:
AttributeDefinitions:
- AttributeName: name
AttributeType: S
, но если вы действительно хотите решить проблему, правильный ответ - добавить свойство ProvisionedThroughput или изменить BillingMode