添加扩展后,我收到词法和预处理器错误 Xcode 9.3?

After adding Extension I am getting Lexical and PreProcessor error Xcode 9.3?

大家好,我已经添加了通知服务扩展并正确添加了目标。当我构建项目时出现词法错误。

已尝试清理存档、重新启动Xcode、更改框架路径。

如果我删除通知服务扩展然后一切正常,当我将通知扩展添加到我的项目时我收到此错误。

如果有人遇到这个问题。让我知道我做错了什么。

我做了什么?

在项目下添加文件 -> 新建 -> 目标 -> 通知服务扩展。

对扩展 class 文件进行了更改。

self.contentHandler = contentHandler;
    self.bestAttemptContent = [request.content mutableCopy];
    NSString *imgUrl = request.content.userInfo[@"data"][@"attachment-url"];
    NSURL *imageURL = [NSURL URLWithString:imgUrl];
    NSError *error;
    UNNotificationAttachment *icon = [UNNotificationAttachment attachmentWithIdentifier:@"image" URL:imageURL options:nil error:&error];
    if (error)
    {
        NSLog(@"error while storing image attachment in notification: %@", error);
    }
    if (icon)
    {
        self.bestAttemptContent.attachments = @[icon];
    }
    self.contentHandler(self.bestAttemptContent);

如果您正在使用 cocoa pods,请编辑您的 pod 文件,并创建两种类型的 pods,一种用于主要目标应用程序,一种用于扩展目标。

def application_pods
use_frameworks!
#list of frameworks you use in your main target
pod 'UIImageView+WebCache'
end


def extension_pods
use_frameworks!
#list of frameworks you would use in your extension
pod 'UIImageView+WebCache'    
end


target 'YourMainTargetName' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
# Pods for YourTargetName
application_pods
end

target 'NotificationService' do
extension_pods
end

如果您不使用 pods,那么您需要 select UIImageView+WebCache .h,.m 文件,并且在 Target membership 部分,您需要选中扩展目标复选框。

最后:

问题是因为创建的扩展将头路径作为父文件头路径,所以如果你在前缀中提到任何 pod 文件头路径那么它会给你错误,所以删除头路径并保留它是空的。

构建设置 -> HeaderPath -> 删除。

确保在删除路径时选择了扩展目标。