swift/ios:error(报错)汇总(持续更新)

1、 error “_OBJC_CLASS_$_XXXXXXX”, referenced from: objc-class-ref in
解决方案:根据_OBJC_CLASS_$_的XXXXXXX找到对应的类库,添加即可

 

2、崩溃:Trapped uncaught exception 'NSInternalInconsistencyException', reason: 'Client error attempting to change layout margins of a private view'

原因:iOS13中导航栏 KVC私有属性布局导致的崩溃

修改方案:定义一个 UINavigationBar 子类,重写 layoutSubviews 方法,在此方法里遍历 subviews 获取 _UINavigationBarContentView,使用设置 frame 的方式,让 _UINavigationBarContentView 向两边伸展,从而抵消两边的边距

- (void)layoutSubviews {
    [super layoutSubviews];
 
    for (UIView *subview in self.subviews) {
        if ([NSStringFromClass([subview class]) containsString:@"_UINavigationBarContentView"]) {
            if ([UIDevice currentDevice].systemVersion.floatValue >= 13.0) {
                UIEdgeInsets margins = subview.layoutMargins;
                subview.frame = CGRectMake(-margins.left, -margins.top, margins.left + margins.right + subview.frame.size.width, margins.top + margins.bottom + subview.frame.size.height);
            } else {
                subview.layoutMargins = UIEdgeInsetsZero;
            }
            break;
        }
    }
}

 

4、ios13版本中,使用Contacts 框架中的unifiedContact方法更新通讯录报错:

store.unifiedContact(withIdentifier: contactID, keysToFetch: keys)

错误提示如下:

Error Domain=CNErrorDomain Code=102 "(null)" UserInfo={CNKeyPaths=(
    note
), CNInvalidRecords=(
    "<CNContactFetchRequest: 0x28115bb10: predicate=<CNiOSABContactIdentifiersPredicate: 0x280a741c0: kind=-[CNContact predicateForContactsWithIdentifiers:], identifiers=(\n    \"78DD9DCD-9BEF-460E-872D-C2EA742A6877\"\n)>, keysToFetch=(\n    identifier,\n    namePrefix,\n    givenName,\n    middleName,\n    familyName,\n    previousFamilyName,\n    nameSuffix,\n    nickname,\n    phoneticGivenName,\n    phoneticMiddleName,\n    phoneticFamilyName,\n    phoneNumbers,\n    emailAddresses,\n    postalAddresses,\n    jobTitle,\n    departmentName,\n    organizationName,\n    note,\n    contactType,\n    birthday,\n    nonGregorianBirthday,\n    instantMessageAddresses,\n    contactRelations,\n    socialProfiles,\n    dates,\n    \"<CNAggregateKeyDescriptor: 0x281feb500: kind=+[CNContactContentViewController descriptorForRequiredKeys]>\"\n), unifyResults=1, sortOrder=0>"
)}

错误原因:unifiedContact方法中使用的keys中包含了CNContactNoteKey 这个key,苹果官方描述说明包含这个key,在ios13版本中需要去申请授权才可以使用

解决方案:去掉keys中的CNContactNoteKey,项目即可正常工作

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值