ios - iPhone 应用程序中的 Skydrive 登录崩溃

标签 ios iphone objective-c onedrive

我正在开发一个应用程序,其中集成了天空驱动框架。但是当我尝试登录时,我的应用程序崩溃了:

uncaught exception 'NSInternalInconsistencyException

原因:

Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/

使用“LiveSDK/Library”可以正常工作,但该库不能与 ARC 一起使用。 我做错了什么?

这是我的代码:

(void)signInMethod { 
self.liveClient =
[[LiveConnectClient alloc] initWithClientId:APP_CLIENT_ID 
                                                     delegate:self 
                                                    userState:@"initialize"]; 
}

-(void)authCompleted:(LiveConnectSessionStatus) status 
          session:(LiveConnectSession *) session 
        userState:(id) userState { if ([userState isEqual:@"initialize"]) {
    [self.liveClient login:self 
                    scopes:[NSArray arrayWithObjects:@"wl.signin", nil] 
                  delegate:self 
                 userState:@"signin"];

} if ([userState isEqual:@"signin"]) {
    if (session != nil)
    {
        NSLog(@"signed in");      
    }
     } }

-(void)authFailed:(NSError *) error 
     userState:(id)userState { NSLog(@"%@",[NSString stringWithFormat:@"Error: %@", [error localizedDescription]]);  }

最佳答案

错误消息基本上表明您有一个 ViewController 正在尝试加载 NIB 文件,但它找不到它,因为它未包含在资源中,或者它的名称与预期不同。

完整的错误消息应包含文件名 - 因为您没有发布它,所以我无法确定,但 LiveAuthDialog_iPadLiveAuthDialog_iPhone 可能会丢失在这里,这些是我发现 LiveSDK 使用的唯一 .xib 文件。

删除对 .xib 文件的引用并将其重新添加到您的项目中(如果存在),否则将其添加到您的项目中。然后再次清理并构建。

(另请参阅:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle)

更新(见评论):

如果使用已编译的库版本 ('LiveSDK.framework')(而不是导入 LiveSDK 源),则框架预计会包含在应用程序包的资源中code> 文件夹,可以将其添加到宿主项目的复制捆绑资源构建阶段,或者将其添加到复制文件构建阶段并将目标设置为 资源

位置很重要,因为 LiveSDK 的 -[LiveAuthRequest authorize]方法将主要尝试从框架包加载用于身份验证对话框的 NIB 文件(使用 -[LiveAuthHelper getSDKBundle] ),期望在主包的资源中找到框架:

+ (NSBundle *) getSDKBundle
{
    NSString *sdkPath = [[NSBundle mainBundle] pathForResource:@"LiveSDK"
                                                        ofType:@"framework"];
    return (sdkPath)? [NSBundle bundleWithPath:sdkPath] : [NSBundle mainBundle];
}

关于ios - iPhone 应用程序中的 Skydrive 登录崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24511326/

相关文章:

ios - 只有当核心数据和 NSFetchedResultsController 满足某些条件时,才在 UITableViewCell 中实现 UIImageView

ios - 如何在函数的返回类型中引用遵循协议(protocol)的类?

iphone - 如何对私有(private)方法进行前向声明?

ios - objective-c 中的唯一标识符(长)

ios - 拍照前访问设备相机曝光值

iphone - 如果我没有启用角标(Badge),为什么我的 iOS 应用程序图标会显示角标(Badge)编号?

iphone - 在 Xcode 中项目构建的链接阶段出现重复符号问题

iphone - 动画自定义 UIView

iphone - 在 objective-c 中捏合放大和缩小

objective-c - 应用程序提交 iOS 的 Bundle ID