Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS共享扩展:如何从主机应用程序中同时共享URL和文本_Ios_Ios9_Ios Extensions - Fatal编程技术网

iOS共享扩展:如何从主机应用程序中同时共享URL和文本

iOS共享扩展:如何从主机应用程序中同时共享URL和文本,ios,ios9,ios-extensions,Ios,Ios9,Ios Extensions,我想使用共享扩展共享主机应用程序中的文本和URL - (BOOL)isContentValid { for (NSExtensionItem *item in self.extensionContext.inputItems) { for (NSItemProvider *itemProvider in item.attachments) { if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *

我想使用共享扩展共享主机应用程序中的文本和URL

- (BOOL)isContentValid {


for (NSExtensionItem *item in self.extensionContext.inputItems) {
    for (NSItemProvider *itemProvider in item.attachments) {
        if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeURL ]) {//
            [itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeURL options:nil completionHandler:^(NSURL *url, NSError *error) {
                if(url  ) {

                        self.linksURL= [url absoluteString];

                }
            }];
        }
        else if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeText ])
        {
            [itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeText options:nil completionHandler:^(NSURL *url, NSError *error) {
                if(url  ) {
                        self.linkTitleText= [url absoluteString];

                }
            }];


        }
    }

}





self.charactersRemaining=@85;
return YES;

}

这大部分是正确的,但方法的实现是错误的,因为在发生任何事情之前,您将返回TRUE。与其这样做,我建议使用一个带有完成处理程序的方法,就像这样

-(void)contentURL:(NSExtensionItem *)extension completion:(void (^)(NSURL *url))completion {
    for (NSItemProvider *items in self.shareItem.attachments) {
        if ([items hasItemConformingToTypeIdentifier:(NSString *)kUTTypeURL]) {
            [items loadItemForTypeIdentifier:(NSString *)kUTTypeURL options:nil completionHandler:^(NSURL *url, NSError *error) {
                [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                    completion(url);

                }];

            }];

        }

    }

}
然后为text属性创建一个类似的方法


p.S别忘了将操作放在块中

这大部分是正确的,但方法的实现是错误的,因为在发生任何事情之前,您将返回TRUE。与其这样做,我建议使用一个带有完成处理程序的方法,就像这样

-(void)contentURL:(NSExtensionItem *)extension completion:(void (^)(NSURL *url))completion {
    for (NSItemProvider *items in self.shareItem.attachments) {
        if ([items hasItemConformingToTypeIdentifier:(NSString *)kUTTypeURL]) {
            [items loadItemForTypeIdentifier:(NSString *)kUTTypeURL options:nil completionHandler:^(NSURL *url, NSError *error) {
                [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                    completion(url);

                }];

            }];

        }

    }

}
然后为text属性创建一个类似的方法

p.S别忘了将操作放入块中