11

マルチピア接続を介してテキスト、画像、または連絡先を別のデバイスに送信できるアプリに取り組んでいます。次に、2 番目のデバイスのコア データに保存されます。

私がしていることは、データを NSDictionary として送信し、再度変換することです。そのため、受信デバイスに NSDictionary が残っています。では、@"objectData" のキーのオブジェクトを Core Data に保存するにはどうすればよいでしょうか?

NSString、UIImage、ABPerson で動作するようにしたいと思います。

    // Create a new object in the managed object context.
    Received *receivedData = [NSEntityDescription insertNewObjectForEntityForName:@"Received" inManagedObjectContext:self.managedObjectContext];
    // Assign the properties based on what was input in the textfields.

    // Check what type it is
    NSString *dataType = [dictionary objectForKey:@"type"];
    receivedData.type =  dataType;

    // Determine what type of data was passed over...

    if ([dataType isEqualToString:@"Photo"])
    {
        receivedData.object = UIImageJPEGRepresentation([dictionary 
                                                         objectForKey:@"object"], 0.5f);

        NSLog(@"A photo saved in core data");
    }
    else  
    { 

      //receivedData.object = [NSKeyedArchiver archivedDataWithRootObject:[dictionary objectForKey:@"object"]];
      receivedData.object = [[dictionary objectForKey:@"object"] dataUsingEncoding:NSUTF8StringEncoding];

    }

    // Save the managed object context.
    NSError *error = nil;
    [self.managedObjectContext save:&error];

データを表示するときに繰り返されるため、コアデータを変換する方法を決定するためにif、else ifステートメントを特に実行したくありません。他にできることはありますか?現在、NSKeyedArchiver タイプでエラーが発生していますが、その理由がわからないため、コメント アウトされています。

どんな助けでも大歓迎です!

4

1 に答える 1

19

このリンクを試して、その仕組みを理解してください

NSCoding(またはNSSecureCoding) プロトコルに準拠する任意のオブジェクトの NSData を取得できます。

NSData *data=[NSKeyedArchiver archivedDataWithRootObject:yourObject];

この行はからオブジェクトを作成しますNSData

TestClass *objTest=[NSKeyedUnarchiver unarchiveObjectWithData:yourData];

UIImageNSString準拠してNSCodingABPersonますが、を使用する必要があるため、vCardRepresentationwhich を返しますNSData

于 2013-11-08T04:57:46.713 に答える