在AppDelegate中赋值launchOptions给self报错:未找到该属性
解决方法
你遇到的问题本质是AppDelegate类里没有声明launchOptions这个属性,编译器找不到它,所以报错。下面分Objective-C和Swift两种场景给出具体解决步骤:
Objective-C 场景
- 打开
AppDelegate.h文件,添加属性声明:
@property (nonatomic, strong) NSDictionary *launchOptions;
- 回到
AppDelegate.m的didFinishLaunchingWithOptions方法里赋值:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 把传入的launchOptions赋值给实例属性 self.launchOptions = launchOptions; // 其他初始化代码 return YES; }
- 之后在AppDelegate的其他方法里,就能正常通过
self.launchOptions访问这个值了。
Swift 场景
- 在
AppDelegate.swift的类内部,添加属性定义:
// 声明可选类型,因为launchOptions可能为nil var launchOptions: [UIApplication.LaunchOptionsKey: Any]?
- 在
didFinishLaunchingWithOptions方法里完成赋值:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { self.launchOptions = launchOptions // 其他初始化代码 return true }
- 后续在其他方法中直接调用
self.launchOptions即可。
额外注意
使用self.launchOptions时记得做判空处理(比如OC里用if (self.launchOptions),Swift里用if let options = self.launchOptions),避免因为nil值导致崩溃。
内容的提问来源于stack exchange,提问作者Danzeeeee
相关产品推荐
相关产品推荐

