#ios #objective-c #json #core-data
#iOS #objective-c #json #core-данные
Вопрос:
Я не знаю, соответствует ли заголовок вопросу или нет, но если вы чувствуете, что в нем чего-то не хватает, пожалуйста, отредактируйте вопрос.
Я хочу отправить параметр в определенном формате, например, JSON
в AFNeworking
, чтобы сохранить данные на сервере.
У меня есть NSArray
файл, в котором есть имя fetchedDX
, и я загружаю его значениями из CoreData as, fetchedDX = [Diagnoses MR_findAllWithPredicate:predicate];
который получает правильные значения, поскольку я использую его количество в одном месте, и это дает мне правильное количество. Это жесткий NSDictionary, который я готовлю к отправке:
NSDictionary *superBillData = @{
@"appointmentID": @"ABC",
@"patientID": @"ABC",
@"createdBy": @"ABC",
@"lastChangedBy": @"ABC",
@"Diagnoses":@[
@{
@"Code":@"hello world",
@"shortDescription": @"my@you.com"
},
@{
@"Code":@"hello 2",
@"shortDescription": @"Lorem Ipsum"
},
]};
Здесь Diagnoses
ключом является тот, который отправляет несколько объектов. Теперь у меня есть эти данные в fetchedDX
массиве, который мне предоставили core data, но я не знаю, как сделать динамический, NSDictionary
потому что этот массив может иметь количество, равное одному или нескольким единицам. Итак, на основе каждого значения я должен создать это:
@{
@"Code":@"hello world",
@"shortDescription": @"my@you.com"
}
Вот изображение моей сущности:
Есть идеи, как этого можно достичь?
Комментарии:
1. Есть ли какая-либо взаимосвязь?
2. Сколько атрибутов имеет этот
Diagnoses
объект? Можете ли вы поделитьсяDiagnoses.h
файлом?3. @Adeel да, есть объект, который называется
SuperBill
, с которым он находится в отношениях «один ко многим»Diagnoses
. В то время как superBill имеет значения, указанные вышеDiagnoses
вNSDictionary
.4. Я вижу и предполагаю, что
Code
иshortDescription
являются атрибутамиDiagnoses
объекта, верно? Мне нужно подтвердить это, потому что вы будете использовать эти атрибуты, чтобы получить то, что вы хотите.5. Да, это именно то, что есть.
Code
иshortDescription
являются атрибутамиDiagnoses
.
Ответ №1:
Я предполагаю, что Code
и shortDescription
являются атрибутами вашей Diagnoses
сущности. В Diagnoses.h
объявите метод экземпляра - (NSDictionary *)dictionary;
и сделайте это в своем Diagnoses.m
файле.
- (NSDictionary *)dictionary {
NSArray *keys = @[@"Code", @"codeDescription"];
NSDictionary *dict = [self dictionaryWithValuesForKeys:keys];
return dict;
}
Затем, когда вы готовите словарь параметров, измените свой код на этот.
NSMutableArray *diagnosesArray = [NSMutableArray array];
for (Diagnoses *obejct in fetchedDX) {
[diagnosesArray addObject:[obejct dictionary]];
}
NSDictionary *superBillData = @{
@"appointmentID": @"ABC",
@"patientID": @"ABC",
@"createdBy": @"ABC",
@"lastChangedBy": @"ABC",
@"Diagnoses":diagnosesArray};
Комментарии:
1. это именно то, что я ищу, но, пожалуйста, просто скажите мне одну вещь, что это за класс
Diagnoses.h
?Diagnoses CoreDataProperties.h
илиDiagnoses CoreDataClass.h
потому что это то, для чего сгенерирован xcode, когда я создавал подклассы NSManagedObject.2. А также в
NSArray *keys = @[@"Code", @"shortDescription"];
есть поле связи с именемsuperBill
. Я обновил свой вопрос.3. Сделайте это в
Diagnoses CoreDataClass.h
.4. Если вам нужно только
Code
иshortDescription
, тогда этого будет достаточно. Я думаю, вам не нужно беспокоиться об отношениях.5. Да, действительно, вам не нужно беспокоиться об отношениях с
superBill
. Вам нужны значения двух атрибутов вашей сущности, так что это все, что вам нужно сделать.