আইফোনে জেএসএন এবং কোর ডেটা


93

আমার কাছে একটি মূল ডেটা অবজেক্ট গ্রাফ রয়েছে (একটি টু-বহু সম্পর্কের মাধ্যমে সংযুক্ত দুটি সত্তা নিয়ে গঠিত)।

অপেক্ষাকৃত অনভিজ্ঞ আইফোন বিকাশকারী হিসাবে আমি কৌতূহলী ছিলাম, যে কেউ আইফোনটির জন্য একটি উপযুক্ত জেএসওএন প্রয়োগের সুপারিশ করতে পারে কিনা, যা আমাকে এই অনুমতি দেয়:

  1. মূল তথ্য রেকর্ডগুলিকে একটি জেএসএন স্ট্রিংয়ে রূপান্তর করুন (সত্তার মধ্যে সম্পর্ক বজায় রেখে); এবং

  2. JSON স্ট্রিংটিকে মূল ডেটা অবজেক্টগুলিতে রূপান্তর করুন (আবার সত্তার মধ্যে সম্পর্ক সংরক্ষণ করা)।

আমি এই জায়গায় একটি টিউটোরিয়াল / কোড নমুনার জন্য অসফলভাবে অনুসন্ধান করেছি, যাতে কোনও সহায়তা কৃতজ্ঞতার সাথে গৃহীত হবে।


4
IOS5 এই মধ্যে খুঁজছেন যে কেউ, সেখানে এখন NSJSONSerialization developer.apple.com/library/mac/#documentation/Foundation/... stackoverflow.com/questions/6726899/nsjsonserialization-in-ios5
nicerobot

আমি জানি যে এই প্রশ্নটি খানিকটা পুরানো, তবে আমি ওএসআরফ্লেকেশনকিট নামে একটি সাধারণ গ্রন্থাগার তৈরি করেছি , যা আপনাকে জেএসওএন থেকে / এনএসজেএসনরিয়ালাইজেশন , বা এনএসডিকোরিয়াম ব্যবহার করে অবজেক্টগুলিকে সিরিয়ালাইজ / ডিসায়ারাইজ করতে দেয়। এটি কোর ডেটা অবজেক্টগুলিকে সমর্থন করে।
আলেকজান্দ্রে ওএস

উত্তর:


103

প্রথমে ব্যবহার করার জন্য একটি জেএসওএন লাইব্রেরি বেছে নিন, আমি ব্যক্তিগতভাবে টাচজসনকে পছন্দ করি তবে এর বাইরে আরও বেশ কয়েকটি রয়েছে। জটিল অংশটি যদিও খুব কঠিন নয়, তা হ'ল রূপান্তর করার জন্য আপনার পরিচালিত অবজেক্টগুলিকে উপযুক্ত কাঠামোতে রূপান্তর করা। আমি এই বাস্তবটি দ্রুত লিখেছি যাতে এটিতে দু'একটি ত্রুটি থাকতে পারে :)

আপনি যে পদ্ধতিগুলি কল করেছেন তা হ'ল:

- (NSString*)jsonStructureFromManagedObjects:(NSArray*)managedObjects;
- (NSArray*)managedObjectsFromJSONStructure:(NSString*)json withManagedObjectContext:(NSManagedObjectContext*)moc;

এবং বাস্তবায়ন নিম্নরূপ:

- (NSDictionary*)dataStructureFromManagedObject:(NSManagedObject*)managedObject
{
  NSDictionary *attributesByName = [[managedObject entity] attributesByName];
  NSDictionary *relationshipsByName = [[managedObject entity] relationshipsByName];
  NSMutableDictionary *valuesDictionary = [[managedObject dictionaryWithValuesForKeys:[attributesByName allKeys]] mutableCopy];
  [valuesDictionary setObject:[[managedObject entity] name] forKey:@"ManagedObjectName"];
  for (NSString *relationshipName in [relationshipsByName allKeys]) {
    NSRelationshipDescription *description = [[[managedObject entity] relationshipsByName] objectForKey:relationshipName];
    if (![description isToMany]) {
      NSManagedObject *relationshipObject = [managedObject valueForKey:relationshipName];
      [valuesDictionary setObject:[self dataStructureForManagedObject:relationshipObject] forKey:relationshipName];
      continue;
    }
    NSSet *relationshipObjects = [managedObject objectForKey:relationshipName];
    NSMutableArray *relationshipArray = [[NSMutableArray alloc] init];
    for (NSManagedObject *relationshipObject in relationshipObjects) {
      [relationshipArray addObject:[self dataStructureForManagedObject:relationshipObject]];
    }
    [valuesDictionary setObject:relationshipArray forKey:relationshipName];
  }
  return [valuesDictionary autorelease];
}

- (NSArray*)dataStructuresFromManagedObjects:(NSArray*)managedObjects
{
  NSMutableArray *dataArray = [[NSMutableArray alloc] init];
  for (NSManagedObject *managedObject in managedObjects) {
    [dataArray addObject:[self dataStructureForManagedObject:managedObject]];
  }
  return [dataArray autorelease];
}

- (NSString*)jsonStructureFromManagedObjects:(NSArray*)managedObjects
{
  NSArray *objectsArray = [self dataStructuresFromManagedObjects:managedObjects];
  NSString *jsonString = [[CJSONSerializer serializer] serializeArray:objectsArray];
  return jsonString;
}

- (NSManagedObject*)managedObjectFromStructure:(NSDictionary*)structureDictionary withManagedObjectContext:(NSManagedObjectContext*)moc
{
  NSString *objectName = [structureDictionary objectForKey:@"ManagedObjectName"];
  NSManagedObject *managedObject = [NSEntityDescription insertNewObjectForEntityForName:objectName inManagedObjectContext:moc];
  [managedObject setValuesForKeysWithDictionary:structureDictionary];

  for (NSString *relationshipName in [[[managedObject entity] relationshipsByName] allKeys]) {
    NSRelationshipDescription *description = [relationshipsByName objectForKey:relationshipName];
    if (![description isToMany]) {
      NSDictionary *childStructureDictionary = [structureDictionary objectForKey:relationshipName];
      NSManagedObject *childObject = [self managedObjectFromStructure:childStructureDictionary withManagedObjectContext:moc];
      [managedObject setObject:childObject forKey:relationshipName];
      continue;
    }
    NSMutableSet *relationshipSet = [managedObject mutableSetForKey:relationshipName];
    NSArray *relationshipArray = [structureDictionary objectForKey:relationshipName];
    for (NSDictionary *childStructureDictionary in relationshipArray) {
      NSManagedObject *childObject = [self managedObjectFromStructure:childStructureDictionary withManagedObjectContext:moc];
      [relationshipSet addObject:childObject];
    }
  }
  return managedObject;
}

- (NSArray*)managedObjectsFromJSONStructure:(NSString*)json withManagedObjectContext:(NSManagedObjectContext*)moc
{
  NSError *error = nil;
  NSArray *structureArray = [[CJSONDeserializer deserializer] deserializeAsArray:json error:&error];
  NSAssert2(error == nil, @"Failed to deserialize\n%@\n%@", [error localizedDescription], json);
  NSMutableArray *objectArray = [[NSMutableArray alloc] init];
  for (NSDictionary *structureDictionary in structureArray) {
    [objectArray addObject:[self managedObjectFromStructure:structureDictionary withManagedObjectContext:moc]];
  }
  return [objectArray autorelease];
}

এখন এটি পুনরাবৃত্ত হয় তাই যদি আপনি সতর্ক না হন তবে সহজেই আপনার সম্পূর্ণ অবিচ্ছিন্ন স্টোরটির অনুবাদ শেষ করতে পারেন। আপনার সম্পর্কগুলি দেখুন এবং তা নিশ্চিত করুন যে তারা কেবলমাত্র অবজেক্ট ট্রিটিকে "নীচে" যেতে হবে যাতে আপনি কেবল অনুবাদ করতে চান এমন অবজেক্টগুলি পান।


আর একটি দুর্দান্ত উত্তরের জন্য এবং আপনার খুব সহায়ক বইয়ের জন্য আপনাকে আবার ধন্যবাদ! :)
উরিজেন

4
হাই মারকাস আমি উপরের কোডটি স্রেফ চেষ্টা করেছি (কিছু সংশোধন করে এটিকে সংকলন করতে পেরেছি এবং অ্যাপ্লিকেশন ক্রাশ না হওয়া অবধি কার্যকর অনির্দিষ্টকালের জন্য চলতে পারে)। আপনাকে বিরক্ত করার জন্য দুঃখিত তবে আমি আগ্রহী ছিলাম যদি আপনি সম্ভবত এই সমস্যা সমাধানের জন্য আমাকে সঠিক দিকে নির্দেশ করতে পারেন। এটি ডেটাস্ট্রাকচারের পুনরাবৃত্তির সাথেই মনে হচ্ছেফ্রেম্যানেজডঅবজেক্ট পদ্ধতিতে ...
উরিজেন

4
আপনার ডেটা কাঠামোর উপর নির্ভর করে। যদি আপনার মডেলটি একটি লুপ তৈরি করে তবে তা চিরকালের জন্য চলবে। আপনার ডেটা মডেলটি পর্যালোচনা করুন এবং হয় তা কোনও গাছের নকশা কিনা তা নিশ্চিত করুন বা লুপিং রোধ করতে পুনরাবৃত্ত কোডে লজিক স্টপগুলি রাখুন।
মার্কাস এস জারা

4
আপনি কি এই কোডটি চালানোর চেষ্টা করেছেন? অনেক ত্রুটি আছে। ডেটা স্ট্রাকচারফোর্মে ম্যানেজডঅবজেক্ট এমনকি উপস্থিত নেই। আমি ভেবেছিলাম এটি কেবল একটি টাইপো হতে পারে তবে আপনি যদি এটি ডেটা স্ট্রাকচারফ্রান্সম্যানেজডঅবজেক্টে বদলে যান তবে সম্পর্কের জোড়গুলির মধ্যে অসীম পিছনে পিছনে ছোঁয়া যায়। আমি কি এখানে কিছু অতিরিক্ত কোড মিস করছি?
ক্রিস মিচেলমোর

4
এই কোড উদাহরণটি দুই বছর আগে ব্রাউজারে লেখা হয়েছিল written এটি একটি অনুলিপি এবং পেস্ট না অনুপ্রেরণা উদ্দেশ্যে করা হয়েছিল। অসীম লুপ হিসাবে, এর অর্থ হল আপনার মডেলটিতে একটি লুপ রয়েছে এবং চক্রটি ভাঙতে আপনার অ্যাপ্লিকেশনটিতে মডেল নির্দিষ্ট যুক্তি যুক্ত করতে হবে। এটি করার বিভিন্ন উপায় রয়েছে যা এই উদাহরণে নেই।
মার্কাস এস জারা

12

আমি কেবল একটি ছোট টাইপোকটি নির্দেশ করতে চেয়েছিলাম, যা কোডটি ক্র্যাশ করেছিল এবং আশা করি এটি আপনাকে কয়েক মিনিট বাঁচাতে পারে।

- (NSArray*)dataStructuresFromManagedObjects:(NSArray*)managedObjects {

    NSMutableArray *dataArray = [[NSArray alloc] init];
    for (NSManagedObject *managedObject in managedObjects) {
        [dataArray addObject:[self dataStructureFromManagedObject:managedObject]];
    }
    return [dataArray autorelease];
}

দ্য NSMutableArray *dataArray = [[NSArray alloc] init]; // This should be NSMutableArray

সত্যিই হওয়া উচিত NSMutableArray *dataArray = [[NSMutableArray alloc] init];

এটাই সব।

ধন্যবাদ


10

রেলের সাথে কোর ডেটা সিঙ্ক্রোনাইজ করা একটি বিশদ উপস্থাপনা যা আপনার কোর ডেটা অবজেক্টগুলিকে জেএসএন / থেকে সিরিয়ালাইজ করার জন্য / ডিজিটাইজ করার জন্য নমুনা কোড অন্তর্ভুক্ত করে (কোর ডেটা অংশের জন্য 55 স্লাইডে এড়িয়ে যান)। তার নমুনা কোডটি সম্পর্ক ছাড়াই মোটামুটি সহজ মডেল ধরে নিয়েছে, যদিও আমি মনে করি এটি প্রসারিত করা বেশ সহজ হবে।

উপস্থাপনাটি আপনার মূল ডেটা মডেলটিকে আরইএসটি-ভিত্তিক ওয়েব অ্যাপ্লিকেশনের সাথে সিঙ্কে রাখার বিষয়ে কিছু বিশদে চলে গেছে, অবজেক্টিভ রিসোর্স এবং এএসআইএইচটিটিপিউরেস্ট সহ কয়েকটি দরকারী লাইব্রেরির পয়েন্টার সহ । আপনি যা করার চেষ্টা করছেন তা যদি তা নিশ্চিত না তবে কোর ডেটা কোডের জন্যও এটি মূল্যবান।


7

যদি আপনার একটি NSDateপরিচালিত অবজেক্টে থাকে তবে উপরের মতামতগুলির একটিতে উল্লিখিত হিসাবে, আপনাকে এই উপাদানটি ধারণ করে ক্রমিকায়িত করতে সমস্যা হবে NSDate। একটি সাধারণ ফিক্স হ'ল উদ্দেশ্য-সি বিভাগগুলি ব্যবহার করার জন্য একটি JSONDataRepresentationপদ্ধতি যুক্ত করা NSDate

আপনার প্রকল্পে এই দুটি ফাইল যুক্ত করুন:

এনএসডেট এইচ:

#import <Foundation/Foundation.h>

@interface NSDate (jsondatarepresentation) 

- (NSData*) JSONDataRepresentation;

@end

এনএসডিট.এম:

#import "NSDate.h"

@implementation NSDate (jsondatarepresentation)

- (NSData*) JSONDataRepresentation {
    return [[[NSNumber numberWithDouble:[self timeIntervalSince1970]] stringValue] dataUsingEncoding:NSUTF8StringEncoding];
}

@end

3

এই ভেবে চিন্তে আইডি পোস্ট করুন একটি দ্রুত আপডেট। আমি মার্কাস এবং ব্র্যান্ডনের উত্তরগুলি অনুসরণ করেছি এবং জেএসএন রফতানির জন্য এটি নিয়ে এসেছি (এটি এখনও টাচজসন ব্যবহার করে):

- (NSData*)jsonStructureFromManagedObjects:(NSArray*)managedObjects
{
    NSArray *objectsArray = [self dataStructuresFromManagedObjects:managedObjects];
    NSData *jsonData      = [[CJSONSerializer serializer] serializeArray:objectsArray error:nil];
    return jsonData;
}

- (NSArray*)dataStructuresFromManagedObjects:(NSArray*)managedObjects
{
    NSMutableArray *dataArray = [[NSMutableArray alloc] init];
    for (NSManagedObject *managedObject in managedObjects) {
        [dataArray addObject:[self dataStructureFromManagedObject:managedObject]];
    }
    return dataArray;
}

- (NSDictionary*)dataStructureFromManagedObject:(NSManagedObject*)managedObject
{
    NSDictionary *attributesByName        = [[managedObject entity] attributesByName];
    NSDictionary *relationshipsByName     = [[managedObject entity] relationshipsByName];
    NSMutableDictionary *valuesDictionary = [[managedObject dictionaryWithValuesForKeys:[attributesByName allKeys]] mutableCopy];
    [valuesDictionary setObject:[[managedObject entity] name] forKey:@"ManagedObjectName"];

    for (NSString *relationshipName in [relationshipsByName allKeys]) {

        NSRelationshipDescription *description = [[[managedObject entity] relationshipsByName] objectForKey:relationshipName];

        if ([[[description userInfo] objectForKey:@"isExportable"] boolValue] == YES) {

            if (![description isToMany]) {
                NSManagedObject *relationshipObject = [managedObject valueForKey:relationshipName];
                if (relationshipObject) {
                    [valuesDictionary setObject:[self dataStructureFromManagedObject:relationshipObject] forKey:relationshipName];
                }

                continue;
            }

            NSSet *relationshipObjects        = [managedObject valueForKey:relationshipName];
            NSMutableArray *relationshipArray = [[NSMutableArray alloc] init];

            for (NSManagedObject *relationshipObject in relationshipObjects) {
                [relationshipArray addObject:[self dataStructureFromManagedObject:relationshipObject]];
            }

            [valuesDictionary setObject:relationshipArray forKey:relationshipName];

        }

    }
    return valuesDictionary;
}

আমি আমদানিটি কাজ করে উঠতে পারি না, সম্ভবত আমি ম্যাজিকাল রেকর্ড ব্যবহার করছি এই বিষয়টি নিয়ে আমি কিছু জানি না তবে আমি আসন্ন JSON প্রবাহটি লুপ করছি এবং ম্যানুয়ালি বস্তু তৈরি করছি ...



2

আমি এই পোস্টটি জুড়ে এসেছি যা খুব ভালভাবে কাজ করে।

http://touchalicious.com/blog/2009/10/25/turn-core-data-models-into-json.html

যেহেতু এটি পুনরাবৃত্তিযোগ্য, তাই অনেকগুলি থেকে বহু সম্পর্কগুলি নিজেরাই লুপ করে চলেছে। এটি এড়াতে, আমি আমার কোর ডেটা মডেলের সম্পর্কের ব্যবহারকারী তথ্য অভিধানে একটি "ইস্পোর্টেবল" কী যুক্ত করেছি। তারপরে আপনি এই কীটিটি পরীক্ষা করতে পারেন এবং এটি ছাড়া সম্পর্কের মধ্য থেকে লুপ না করা চয়ন করতে পারেন।

এখানে চিত্র বর্ণনা লিখুন

if ([property isKindOfClass:[NSRelationshipDescription class]])
    {
        NSRelationshipDescription *relationshipDescription = (NSRelationshipDescription *)property;

        if ([[[relationshipDescription userInfo] objectForKey:@"isExportable"] boolValue] == YES)
        {
            NSString *name = [relationshipDescription name];

            if ([relationshipDescription isToMany])
            {
                NSMutableArray *arr = [properties valueForKey:name];
                if (!arr)
                {
                    arr = [[NSMutableArray alloc] init];
                    [properties setValue:arr forKey:name];
                }

                for (NSManagedObject *o in [self mutableSetValueForKey:name])
                {
                    [arr addObject:[o propertiesDictionary]];
                }
            }
            else
            {
                NSManagedObject *o = [self valueForKey:name];
                [properties setValue:[o propertiesDictionary] forKey:name];
            }
        }
    }
}

1

মার্কাস এস জারা আমাকে পুনরাবৃত্ত ধারণাটি একটি কার্যক্ষম সংস্করণে আনতে অনুপ্রাণিত করেছে। এই সংস্করণে আপনার কোরডাটাতে কোনও কী সেট করার দরকার নেই এবং আপনি এটি আপনার প্রকল্পে কাটাতে এবং আটকে দিতে পারেন :-)

// MARK: - encoding and decoding CoreData entity to dictionary

func dataStructureFromManagedObject( managedObject:NSManagedObject?, parentEntity: NSEntityDescription? = nil) -> NSMutableDictionary {
    if (managedObject != nil) {
        var attributesByName: NSDictionary = managedObject!.entity.attributesByName
        var relationshipsByName: NSDictionary  = managedObject!.entity.relationshipsByName
        var valuesImmutableDictionary: NSDictionary = managedObject!.dictionaryWithValuesForKeys( attributesByName.allKeys)
        var valuesDictionary: NSMutableDictionary = valuesImmutableDictionary.mutableCopy() as NSMutableDictionary
        valuesDictionary.setObject( managedObject!.entity.name!, forKey: "ManagedObjectName")
        for relationshipNameObject in relationshipsByName.allKeys {
            var relationshipName: NSString = relationshipNameObject as  NSString
            var relationshipDescription: NSRelationshipDescription? = relationshipsByName.objectForKey( relationshipName) as? NSRelationshipDescription
            if !relationshipDescription!.toMany {
                // ono to one
                if parentEntity == nil || (relationshipDescription! as NSRelationshipDescription).destinationEntity != parentEntity! {
                    // no parent or relationship is "downward" -> object for relationship must be added
                    var relationshipObject: NSManagedObject? = managedObject!.valueForKey( relationshipName) as? NSManagedObject
                    var relationshipObjectDictionary: NSMutableDictionary = self.dataStructureFromManagedObject( relationshipObject, parentEntity: managedObject?.entity)
                    valuesDictionary.setObject( relationshipObjectDictionary, forKey: relationshipName)
                } else {
                    // relationship is "upward" -> nothing to do
                }
            } else {
                // one to many -> all objects must be added
                var relationshipObjects: NSSet = managedObject!.mutableSetValueForKey( relationshipName)
                var relationshipArray:NSMutableArray = []
                for relationshipObjectRaw in relationshipObjects {
                    var relationshipObject:NSManagedObject? = relationshipObjectRaw as? NSManagedObject
                    if relationshipObject != nil && !relationshipObject!.entity.isKindOfEntity( managedObject!.entity) {
                        relationshipArray.addObject(self.dataStructureFromManagedObject( relationshipObject, parentEntity: managedObject?.entity))
                    }
                }
                valuesDictionary.setObject( relationshipArray, forKey: relationshipName)
            }
        }
        return valuesDictionary
    } else {
        return NSMutableDictionary()
    }
}

func managedObjectFromStructure( structureDictionary: NSDictionary, moc: NSManagedObjectContext, parentObject: NSManagedObject? = nil) -> NSManagedObject {
    if structureDictionary.count > 0 {
        var objectName:NSString = structureDictionary.objectForKey( "ManagedObjectName") as NSString
        var managedObject:NSManagedObject = NSEntityDescription.insertNewObjectForEntityForName( objectName, inManagedObjectContext: moc) as NSManagedObject
        var relationshipsByName: NSDictionary  = managedObject.entity.relationshipsByName
        var realObjectStructure:NSMutableDictionary = structureDictionary.mutableCopy() as NSMutableDictionary
        realObjectStructure.removeObjectForKey( "ManagedObjectName")
        for key in realObjectStructure.allKeys {
            // search for "ManagedObjectName" relationship entrys and delete them before filling the managedObject from this structure
            for relationshipName in relationshipsByName.allKeys {
                if relationshipName as NSString == key as NSString {
                    realObjectStructure.removeObjectForKey( key)
                }
            }
        }
        managedObject.setValuesForKeysWithDictionary( realObjectStructure)
        // the main object with attributes is created. Now care about the relationships
        for relationshipName in managedObject.entity.relationshipsByName.keys {
            var description:NSRelationshipDescription = relationshipsByName.objectForKey( relationshipName) as NSRelationshipDescription
            if !description.toMany {
                // to one relationship
                if parentObject == nil || description.destinationEntity != parentObject!.entity {
                    // no parent or relationship is "downward" -> recurse structure to add
                    var childStructureDictionary:NSDictionary = structureDictionary.objectForKey( relationshipName) as NSDictionary
                    if childStructureDictionary.count > 0 {
                        // dictionary not empty -> object must be created and added
                        var childObject:NSManagedObject? = self.managedObjectFromStructure( childStructureDictionary, moc: moc, parentObject: managedObject)
                        // validateForUpdate
                        var error:NSError?
                        if !managedObject.validateForUpdate( &error) {
                            println("Error: Object not in valid state for update!!! -> \(error)")
                        } else {
                            managedObject.setValue( childObject, forKey: relationshipName as NSString)
                        }
                    } else {
                        // relationship is "upward" -> nothing to do
                    }
                }
            } else {
                // to many relationship
                var relationshipSet:NSMutableSet = managedObject.mutableSetValueForKey( relationshipName as NSString)
                var relationshipArray:NSArray = structureDictionary.objectForKey( relationshipName as NSString) as NSArray
                for childStructureDictionary in relationshipArray {
                    if childStructureDictionary.count > 0 {
                        // dictionary not empty -> object must be created and added
                        var childObject:NSManagedObject = self.managedObjectFromStructure( childStructureDictionary as NSDictionary, moc: moc, parentObject: managedObject)
                        // validateForUpdate
                        var error:NSError?
                        if !managedObject.validateForUpdate( &error) {
                            println( "Error: Object not in valid state for update!!! -> \(error)")
                        } else {
                            relationshipSet.addObject( childObject)
                        }
                    } else {
                        // no object was behind the relationship -> nothing to do
                    }
                }
                // save set
                managedObject.setValue( relationshipSet, forKey: relationshipName as NSString)
            }
        }
        // final check validateForUpdate
        var error:NSError?
        if !managedObject.validateForUpdate( &error) {
            println( "Error: Object not in valid state for update although all previous check are passed!!! -> \(error)")
        }
        return managedObject
    } else {
        println( "Error: structure for object was empty. this should not happen at this point")
        var objectName:NSString = structureDictionary.objectForKey( "ManagedObjectName") as NSString
        var managedObject:NSManagedObject = NSEntityDescription.insertNewObjectForEntityForName( objectName, inManagedObjectContext: moc) as NSManagedObject
        return managedObject
    }
}

func dataStructuresFromManagedObjects( managedObjects: NSArray) -> NSArray {
    var dataArray:NSMutableArray = []
    for managedObject in managedObjects {
        dataArray.addObject( self.dataStructureFromManagedObject(managedObject as? NSManagedObject))
    }
    return dataArray
}

এখানে কীটি হ'ল পুনরাবৃত্তির যুক্তি হিসাবে পিতামাতাকে সরিয়ে দেওয়া, তাই আমাদের কোন সম্পর্কটি ডেটা পূরণ করতে হবে তা আমরা সিদ্ধান্ত নিতে পারি। সুতরাং উভয় ফাংশন: dataStructureFromManagedObjectএবং managedObjectFromStructureকোরিডাটা থেকে যে কোনও সত্তা অবজেক্টকে ডিকোরিয়র মধ্যে এবং এনজেক্ট করতে আবার কোনও বস্তুর মধ্যে এনকোড এবং ডিকোড করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.