iOS: ошибка при передаче фотографии из общего расширения в основное приложение.Ошибка: не удалось определить, управляется ли URL поставщиком файлов - PullRequest
0 голосов
/ 09 июля 2019

У меня появляется это сообщение об ошибке при передаче фотографии из Share Extension в главное приложение, когда я нажимаю на кнопку «Опубликовать»:

 itemprovider = <NSItemProvider: 0x281f0e530> {types = (
    "public.jpeg"
)}
2019-07-09 12:03:38.343985+0200 SharePhotos[7558:233169] [default] [ERROR] Failed to determine whether URL /var/mobile/Media/PhotoData/OutgoingTemp/B037656F-3039-4124-9B97-6BF9B5FE1C2D/IMG_0317.JPG (s) is managed by a file provider
2019-07-09 12:03:38.361996+0200 SharePhotos[7558:233145] [User Defaults] Couldn't read values in CFPrefsPlistSource<0x281a2be00> (Domain: group.com.NewTelApps.GoFactDB, User: kCFPreferencesAnyUser, ByHost: Yes, Container: (null), Contents Need Refresh: Yes): Using kCFPreferencesAnyUser with a container is only allowed for System Containers, detaching from cfprefsd
2019-07-09 12:03:38.363525+0200 SharePhotos[7558:233145] -[__NSDictionaryI attachments]: unrecognized selector sent to instance 0x2821864c0
2019-07-09 12:03:38.363792+0200 SharePhotos[7558:233145] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDictionaryI attachments]: unrecognized selector sent to instance 0x2821864c0'
*** First throw call stack:
(0x204a30518 0x203c0b9f8 0x20494d278 0x204a35d60 0x204a379fc 0x205425820 0x100bd0ddc 0x2054c3810 0x204470a38 0x2044717d4 0x20441a320 0x20441ae3c 0x2044234a8 0x204651114 0x204653cd4)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

ShareViewController.m

- (BOOL)isContentValid {
    // Do validation of contentText and/or NSExtensionContext attachments here
    return YES;
}

- (void)didSelectPost {

    for (NSItemProvider* itemProvider in ((NSExtensionItem*)self.extensionContext.inputItems[0]).attachments ) {

        if([itemProvider hasItemConformingToTypeIdentifier:@"public.jpeg"]) {
            NSLog(@"itemprovider = %@", itemProvider);

            [itemProvider loadItemForTypeIdentifier:@"public.jpeg" options:nil completionHandler: ^(id<NSSecureCoding> item, NSError *error) {

                NSData *imgData;
                if([(NSObject*)item isKindOfClass:[NSURL class]]) {
                    imgData = [NSData dataWithContentsOfURL:(NSURL*)item];
                }
                if([(NSObject*)item isKindOfClass:[UIImage class]]) {
                    imgData = UIImagePNGRepresentation((UIImage*)item);
                }

                NSDictionary *dict = @{
                                       @"imgData" : imgData,
                                       @"name" : self.contentText
                                       };
                NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.NewTelApps.GoFactDB"];
                [defaults setObject:dict forKey:@"img"];                              
                [defaults synchronize];

                [self.extensionContext completeRequestReturningItems:@[dict] completionHandler:nil]; //CRASH
            }];
        }
    }
}

В основной цели:
enter image description here В расширении общего доступа:
enter image description here

Я точно знаю, что это уже работает, ноЯ, конечно, сделал ошибку, которая испортила весь процесс, но невозможно узнать, где это?

Конфигурация в Info.plist:

image

image

image

Вылетает именно на этой строке:

[self.extensionContext completeRequestReturningItems:@[dict] completionHandler:nil]; 

Документы

Любыеидеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...