UIPastboard не работает в iOS 7?

Я работаю над приложением iOS, в котором мне нужно обмениваться некоторыми данными между двумя приложениями, и я использую UIPastboard, и данные успешно передаются в iOS ниже 7.0, но не работают в iOS 7. Вот код, который я использую:

// Код для записи.... Используется в приложении "А"

NSString * name = @"peter";
NSNumber *age = [NSNumber numberWithInteger:[@"33" integerValue]];

NSMutableDictionary * dict =[[NSMutableDictionary alloc]init];
[dict setObject:name forKey:@"name"];
[dict setObject:age forKey:@"age"];

UIPasteboard * pb = [UIPasteboard pasteboardWithName:@"mypasteboard" create:YES];
[pb setPersistent:YES];
[pb setData:[NSKeyedArchiver archivedDataWithRootObject:dict] forPasteboardType:@"mydata"];

//Код для чтения..... Используется в приложении "Б"

 UIPasteboard * pb=[UIPasteboard pasteboardWithName:@"mypasteboard" create:NO];
    NSData * data=[[NSData alloc] init];


    data=[pb valueForPasteboardType:@"mydata"];
    NSDictionary * dict;

    if (!data) {
        return nil;
    }
    @try {
        dict = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    }
    @catch (NSException* exception)
    {
        NSLog(@"Exception: %@",exception);
        return nil;
    }


         if(dict)  //In iOS 7 dict contains 'nil' but not in iOS 6.
       {
           NSString * name = [dict objectForKey:@"name"];
           NSNumber * age = [dict objectForKey:@"age"];
           message =[NSString stringWithFormat:@"name =%@,\nage=%@",name,age];
       }
       else
       {
           message =@"No data from Pasteboard";
       }


        UIAlertView *alertView2 = [[UIAlertView alloc] initWithTitle:@"Pasteboard Data"
                                                             message:message
                                                            delegate:self
                                                   cancelButtonTitle:@"Ok"
                                                   otherButtonTitles:Nil, nil];

        alertView2.alertViewStyle = UIAlertViewStyleDefault;
        [alertView2 show];

В iOS 7 dict содержит «nil», но в iOS 6 содержит данные, которые установлены в приложении «A».

Пожалуйста, предложите мне любое решение для этой проблемы.


person ajeet sharma    schedule 23.07.2014    source источник


Ответы (1)


Попробуй это,

UIPasteboard * pb = [UIPasteboard pasteboardWithName:@"mypasteboard" create:YES];
[pb setPersistent:YES];
[pb setValue:[NSKeyedArchiver archivedDataWithRootObject:dict] forPasteboardType:@"mydata"];
person NKB    schedule 23.07.2014