سؤال

أواجه بعض الصعوبات نشر NSManagedObject مع المتداخلة NSManagedObjects مع RestKit.لا يبدو أن يكون الحصول على سجلات مكررة الفرعية NSManagedObjects إدراجها في كوريداتا ما بعد العودة.هنا هو لقطة من النموذج:

Model

هنا هو سلمان أنا نشر:

{
  "actions": [], 
  "application": "Identify", 
  "createBy": "welcomed", 
  "createDt": "2014-04-11T16:26:15Z", 
  "description": null, 
  "externalId": null, 
  "groupId": "5", 
  "id": 0, 
  "images": [
    {
      "format": "JPEG", 
      "height": 200, 
      "id": 0, 
      "image": "/9j/4A..../Pv5n/9k=", 
      "status": "C", 
      "type": "MUGSHOT", 
      "width": 200
    }
  ], 
  "locked": null, 
  "modifyBy": null, 
  "modifyDt": null, 
  "priv": null
}

هنا هو سلمان الذي عاد من الخدمة بعد آخر:

{
"actions": [], 
  "application": "Identify", 
  "createBy": "welcomed", 
  "createDt": 1397233575000, 
  "description": null, 
  "externalId": null, 
  "groupId": "5", 
  "id": 11, 
  "images": [
    {
      "captureDevice": null, 
      "createBy": null, 
      "createDt": null, 
      "format": "JPEG", 
      "height": 200, 
      "id": 11, 
      "image": "/9j/4AAQSkZJR.../Pv5n/9k=", 
      "recordId": 11, 
      "status": "C", 
      "type": "MUGSHOT", 
      "width": 200
    }
  ], 
  "locked": false, 
  "modifyBy": null, 
  "modifyDt": null, 
  "priv": false
}

تحرير (أعتقد أن هذا هو المهم):هنا هو تعيين WTSImage و WTSRecord:

RKEntityMapping *recordMapping = [RKEntityMapping mappingForEntityForName:@"WTSRecord" inManagedObjectStore:self.managedObjectStore];
    [recordMapping addAttributeMappingsFromDictionary:@{
                                                        @"id":@"dbId",
                                                        @"externalId":@"extId",
                                                        @"groupId":@"groupId",
                                                        @"application": @"application",
                                                        @"description": @"desc",
                                                        @"priv": @"priv",
                                                        @"locked": @"locked",
                                                        @"createBy": @"createBy",
                                                        @"createDt": @"createDt",
                                                        @"modifyBy": @"modifyBy",
                                                        @"modifyDt": @"modifyDt",
                                                        }];
    recordMapping.identificationAttributes = @[@"dbId"];

    //image mapping
    RKEntityMapping *imageMapping = [RKEntityMapping mappingForEntityForName:@"WTSImage" inManagedObjectStore:self.managedObjectStore];
    [imageMapping addAttributeMappingsFromDictionary:@{
                                                       @"id": @"dbId",
                                                       @"status": @"status",
                                                       @"type": @"type",
                                                       @"format": @"format",
                                                       @"width": @"width",
                                                       @"height": @"height",
                                                       @"image": @"base64Image"
                                                       }];

    imageMapping.identificationAttributes = @[@"dbId"];
    [recordMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"images" toKeyPath:@"images" withMapping:imageMapping]];

التعليمة البرمجية التالية حيث خلق NSManagedObjects و الاتصال [RKObjectManager postObject:path:parameters:success:failure::

WTSRecord *record = [NSEntityDescription insertNewObjectForEntityForName:@"WTSRecord" inManagedObjectContext:self.managedObjectContext];
record.createBy = @"welcomed";
record.createDt = [NSDate date];
record.application = kWTSApplicationIdentify;
record.groupId = @"5";

WTSImage *image = [NSEntityDescription insertNewObjectForEntityForName:@"WTSImage" inManagedObjectContext:self.managedObjectContext];
image.height = [NSNumber numberWithFloat:mugshot.size.height];
image.width = [NSNumber numberWithFloat:mugshot.size.width];
image.imageData = UIImageJPEGRepresentation(imageData, 1.0);
image.type = kWTSCaptureTypeMugshot;
image.format = kWTSCaptureFormatJpeg;
image.status = kWTSCaptureStatusCaptured;

image.record = record;
[record addImagesObject:image];

RKObjectManager *manager = [RKObjectManager sharedManager];
[manager postObject:record path:@"records" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {

    } failure:^(RKObjectRequestOperation *operation, NSError *error) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error Sending Record" message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
    }];

عند نجاح كتلة الاحتجاج ، أنا التحقق من قاعدة بيانات sqlite هناك 1 WTSRecord إدراجها 2 WTSImages.واحدة من WTSImages الصحيحة FK إلى WTSRecord و PK من قاعدة البيانات ، بينما الآخر يبدو أن اليتامى (dbId و FK إلى WTSRecord يتم تعيين).

هنا هو ارتباط إلى RestKit و البيانات الأساسية سجلات التتبع: https://dl.dropboxusercontent.com/u/466390/restkit2.txt

آمل شخص يمكن أن تساعد!وذلك بفضل!

تحرير بعد بعض البحث وجدت هذا صفحة: https://github.com/RestKit/RestKit/issues/1228

هل يجب علي إنشاء تحديد العناصر على جانب العميل باستخدام UUIDs قبل نشرها إلى بقية الخدمة ؟ سوف RestKit لا تكون قادرة على طلب خريطة الكائنات إلى الكائنات التي تم إنشاؤها بالفعل في مخزن كائن دون تحديد هوية السمة على العميل الجانب ؟

هل كانت مفيدة؟

المحلول

من أجل نشر كائن RestKit يفهم كيفية تحديث هذا البند مع استجابة البيانات ، ولكن هذا لا ينطبق على العلاقة المحتويات.من الناحية الفنية يمكن أن تكون مشفرة ، ولكن ليس حاليا.

إذا كنت في حاجة الكائن في العلاقة بعد التعيين أن يكون نفس الكائن الذي خلق لكم ثم لديك مشكلة.إذا كنت لا تمانع في ذلك كونه وجوه مختلفة إذن المسألة هي مجرد حذف المكرر...

تكرار الحذف:

طلب الجلب كتل لا تستخدم عند معالجة ما بعد استجابة لذلك كنت في حاجة لجلب خداع و حذفها يدويا.أنا ذاهب لنفترض أن أي صورة مع النيل العلاقة إلى مستوى قياسي هو مغفل حتى انها بسيطة نسبيا جلب إلى تنفيذ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top