繁体   English   中英

IOS共享扩展NSMutableArray addObject无法识别的选择器已发送到实例

[英]IOS Share Extension NSMutableArray addObject Unrecognized selector sent to instance

单击发布到共享对话框后,如果arrSites变量当前不为空,则主机应用程序(例如Safari)挂断。 我只能在arrSites变量中存储1个对象。 如何将Object添加到我的NSMutableArray变量?

下面是我实现的代码,它在[arrSites addObject:dictSite]行中生成错误。

- (void)didSelectPost
{
inputItem = self.extensionContext.inputItems.firstObject;

NSItemProvider *urlItemProvider = [[inputItem.userInfo valueForKey:NSExtensionItemAttachmentsKey] objectAtIndex:0];

if ([urlItemProvider hasItemConformingToTypeIdentifier:(__bridge NSString *)kUTTypeURL])
{
    NSLog(@"++++++++++ Attachment is a URL");
    [urlItemProvider loadItemForTypeIdentifier:(__bridge NSString *)kUTTypeURL options:nil completionHandler:^(NSURL *url, NSError *error)
    {
         if (error)
         {
             NSLog(@"Error occured");
         }
         else
         {
             NSMutableArray *arrSites;
             if ([sharedUserDefaults valueForKey:@"SharedExtension"]){
                 arrSites = [sharedUserDefaults objectForKey:@"SharedExtension"];
             }else{
                 arrSites = [[NSMutableArray alloc] init];
             }

             NSDictionary *dictSite = [NSDictionary dictionaryWithObjectsAndKeys:self.contentText, @"Text", url.absoluteString, @"URL",nil];

             [arrSites addObject:dictSite];
             [sharedUserDefaults setObject:arrSites forKey:@"SharedExtension"];
             [sharedUserDefaults synchronize];

             UIAlertController * alert=   [UIAlertController
                                           alertControllerWithTitle:@"Success"
                                           message:@"V7 Posted Successfully."
                                           preferredStyle:UIAlertControllerStyleAlert];
             UIAlertAction* ok = [UIAlertAction
                                  actionWithTitle:@"OK"
                                  style:UIAlertActionStyleDefault
                                  handler:^(UIAlertAction * action)
                                  {
                                      [UIView animateWithDuration:0.20 animations:^
                                       {
                                           self.view.transform = CGAffineTransformMakeTranslation(0, self.view.frame.size.height);
                                       }
                                                       completion:^(BOOL finished)
                                       {
                                           [self.extensionContext completeRequestReturningItems:nil completionHandler:nil];
                                       }];
                                  }];

             [alert addAction:ok];
             [self presentViewController:alert animated:YES completion:nil];
         }
     }];
}
}

没有内存分配,您无法将对象添加到数组,使用like

// allocate the memory of array in before 
NSMutableArray *arrSites = [[NSMutableArray alloc] init];
if ([sharedUserDefaults valueForKey:@"SharedExtension"]){
    [arrSites addObjectsFromArray:[sharedUserDefaults objectForKey:@"SharedExtension"]];
}
[arrSites addObject:dictSite];

问题的根源很可能是

arrSites = [sharedUserDefaults objectForKey:@"SharedExtension"];

创建不可变对象( NSArray代替NSMutableArray )。 您可以使用解决此问题

arrSites = [[sharedUserDefaults objectForKey:@"SharedExtension"] mutableCopy];

代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM