小编Meg*_*anX的帖子

CNContacts框架可能的错误与电话标识符?

最近我从旧的ABAddressBook框架切换到新的CNContacts.在我的项目中,我将本机的联系人与我自己的核心数据联系人同步.为此,我使用联系人标识符和电话标识符来同步电话号码.

但我观察到有趣的事情,当我尝试编辑联系人时,我称这行代码

func getContact() -> CNContact? {
        let contactStore = CNContactStore()
        guard let contactRecord = try? contactStore.unifiedContact(withIdentifier: "8222B6F1-DE99-4099-82A4-47EAB9206A94:ABPerson", keysToFetch: [CNContactViewController.descriptorForRequiredKeys()]) else {
            return nil
        }
        return contactRecord
    }

@IBAction func showContact() {

        let contactViewController = CNContactViewController(forNewContact: self.getContact())
        contactViewController.delegate = self
        contactViewController.title = "New Contact"

        let navigationController = UINavigationController(rootViewController: contactViewController)
        navigationController.navigationBar.isTranslucent = false
        self.present(navigationController, animated: true, completion: nil)
    }

func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?) {
        let newContact = self.getContact()
        viewController.dismiss(animated: false, completion: nil)
    }
Run Code Online (Sandbox Code Playgroud)

这很简单.但是如果在CNContactViewController中我编辑用户照片,电话标识符将会改变,即使我没有编辑该控制器中的电话号码.电话标识符可以像这样轻松打印:

po newContact?.phoneNumbers.first?.identifier
Run Code Online (Sandbox Code Playgroud)

这真的搞砸了我的同步,因为用户可能只是更换照片,但电话号码的标识符会改变,我将无法知道发生了什么.如果我编辑其他一些数据,如人名,公司等,这个标识符将不会改变......即使我将手机编辑为其他值,它也会保持不变.但由于某些原因,更改照片会让它完全混乱.

有没有人观察过这个? …

ios cncontact cncontactviewcontroller

7
推荐指数
1
解决办法
182
查看次数

如何在运行会话期间更改AVCaptureMovieFileOutput视频方向?

我已经制作了一个捕获设备视频输入的代码,到目前为止它工作正常.这是我设定的

// add preview layer
_previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:_session];
_previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[self.videoView.layer addSublayer:_previewLayer];

// add movie output
_movieFileOutput = [[AVCaptureMovieFileOutput alloc] init];
[_session addOutput:_movieFileOutput];
AVCaptureConnection *movieFileOutputConnection = [_movieFileOutput connectionWithMediaType:AVMediaTypeVideo];
movieFileOutputConnection.videoOrientation = [self videoOrientationFromCurrentDeviceOrientation];

// start session
[_session startRunning];
Run Code Online (Sandbox Code Playgroud)

哪里:

- (AVCaptureVideoOrientation) videoOrientationFromCurrentDeviceOrientation {
    switch ([[UIApplication sharedApplication] statusBarOrientation]) {
        case UIInterfaceOrientationPortrait: {
            return AVCaptureVideoOrientationPortrait;
        }
        case UIInterfaceOrientationLandscapeLeft: {
            return AVCaptureVideoOrientationLandscapeLeft;
        }
        case UIInterfaceOrientationLandscapeRight: {
            return AVCaptureVideoOrientationLandscapeRight;
        }
        case UIInterfaceOrientationPortraitUpsideDown: {
            return AVCaptureVideoOrientationPortraitUpsideDown;
        }
        case UIInterfaceOrientationUnknown: {
            return 0;
        }
    } …
Run Code Online (Sandbox Code Playgroud)

iphone video avfoundation ios

6
推荐指数
1
解决办法
1270
查看次数

iPad可以将导航控制器放入popover吗?

我做了popover显示UITableViewController,用于导航.我有兴趣知道的是 - 你能在popover中使用导航控制器吗?假设您有表格,其中每一行都转换为新视图.这可以与popover视图一起使用,如果是这样,你能提供一些有用的例子吗?

uinavigationcontroller ipad uipopovercontroller

5
推荐指数
1
解决办法
2529
查看次数

IPad MBProgressHUD是否支持设备方向更改?

我一直在使用MBProgressHUD来显示hud.在纵向模式下一切正常,但是当我改变设备方向时,hud没有正确旋转?

是否有一些财产以正确的方式设置?

ipad device-orientation ios mbprogresshud

5
推荐指数
0
解决办法
482
查看次数

UIProgressView没有更新?

我已经开始在iOS5中使用UIProgressView了,但还没有真正的运气.我无法更新视图.在每次更新进度后,我都有一系列顺序操作.问题是,进度视图不是一点一点地更新,而是仅在完成后才更新.它是这样的:

float cnt = 0.2;
for (Photo *photo in [Photo photos]) {
    [photos addObject:[photo createJSON]];
    [progressBar setProgress:cnt animated:YES];
    cnt += 0.2;
}
Run Code Online (Sandbox Code Playgroud)

浏览堆栈溢出,我发现这些帖子 - 自iOS 5以来setProgress不再更新UIProgressView,暗示为了使其工作,我需要运行一个单独的线程.

我想澄清这一点,我真的需要单独的线程让UIProgressView正常工作吗?

multithreading uiprogressview ios ios5

5
推荐指数
1
解决办法
1万
查看次数

UIManagedDocument和核心数据

我找到了这些斯坦福大学的教程https://itunes.apple.com/us/course/ipad-iphone-app-development/id495052415,并且一直在听关于核心数据的讲座,这真的很棒.

它显示了如何通过UIManagedDocument... 访问核心数据只有我不明白UIManagedDocument它应该知道它应该使用哪个模型,因为我没有看到它设置在任何地方?

在使用时总结一下UIManagedDocument,如何定义将要使用的数据库模型?

iphone core-data ios uimanageddocument

5
推荐指数
1
解决办法
684
查看次数

我想在联系人应用程序上调整顶视图的效果类似吗?

原生联系人应用程序具有有趣的效果 - 当用户尝试滚动时,滚动视图使用头像推送顶视图,并且仅当顶视图处于"小模式"时才向上滚动.

在此输入图像描述

在此输入图像描述

我能够通过didScroll方法调整滚动视图.但问题是,内容抵消也在改变,而我推顶了.在本机联系人中,仅当顶视图处于"小模式"时,内容偏移才会更改

有什么建议,他们是怎么做到的?

uiscrollview ios

5
推荐指数
1
解决办法
582
查看次数

iOS:如何指定用于将主机名解析为IP地址的DNS?

如标题所述,我具有要使用指定的DNS服务器解析的主机名(例如www.example.com)。例如,在一种情况下,我想使用Google的IPv4 DNS,在另一种情况下,则要使用Google的IPv6 DNS。

我在iOS上浏览了SO,找到了类似的问题(Swift-获取设备的IP地址),所以我确定可以做到,但是我不清楚如何做?

我怎样才能做到这一点?

编辑2018年6月7日

@mdeora从http://www.software7.com/blog/programmatically-query-specific-dns-servers-on-ios/提出的建议解决方案

此解决方案有效,但仅当我使用IPv4 DNS(例如Google的“ 8.8.8.8”)时才有效。如果我尝试使用IPv6 DNS 2001:4860:4860 :: 8888,我什么也收不到。

我设法更改了转换:

void setup_dns_server(res_state res, const char *dns_server)
{
    res_ninit(res);
    struct in_addr addr;

//    int returnValue = inet_aton(dns_server, &addr);
    inet_pton(AF_INET6, dns_server, &addr); // for IPv6 conversion

    res->nsaddr_list[0].sin_addr = addr;
    res->nsaddr_list[0].sin_family = AF_INET;
    res->nsaddr_list[0].sin_port = htons(NS_DEFAULTPORT);
    res->nscount = 1;

};
Run Code Online (Sandbox Code Playgroud)

但是仍然有麻烦:

void query_ip(res_state res, const char *host, char ip[])
{
    u_char answer[NS_PACKETSZ];//NS_IN6ADDRSZ NS_PACKETSZ
    int len = res_nquery(res, host, ns_c_in, ns_t_a, answer, sizeof(answer));

    ns_msg handle; …
Run Code Online (Sandbox Code Playgroud)

dns objective-c ios swift

5
推荐指数
1
解决办法
821
查看次数

手动更改$(AppIdentifierPrefix)属性?

我在Apple商店上传了应用程序.现在我正在开发更新版本.但是,在处理现有项目时,我创建了具有不同名称的新项目.当我完成后,我更改了名称和包标识符以匹配现有的应用程序.

我尝试上传应用程序以测试航班,但我收到了错误

"Invalid IPA: The keychain-access-group in the embedded.mobileprovision and your binary don't match."
Run Code Online (Sandbox Code Playgroud)

所以我开始浏览网络以获得答案......我所提出的是启用权利.我做了,但无济于事......然后我编辑了权利,改变了这个:

$(AppIdentifierPrefix)com.xxxx
Run Code Online (Sandbox Code Playgroud)

对此:

12HJ2312.com.xxxx (the number is number of prefix from developer portal)
Run Code Online (Sandbox Code Playgroud)

它工作,我可以上传.世界再次变得美好.或者是吗?我仍然不明白为什么我要改变它.从哪里来

$(AppIdentifierPrefix)
Run Code Online (Sandbox Code Playgroud)

是红色的?我认为钥匙串是红色的,但似乎没有,因为钥匙串是我输入的相同值.那么我怎么能看到这个价值,它在哪里画出它的内容呢?

keychain uniqueidentifier ios

4
推荐指数
2
解决办法
9921
查看次数

HTTP:为什么在get请求中发送用户名和密码错误?

Genaral练习是指当您登录或执行其他需要您的用户名和密码的操作时,您将其发送到帖子请求的正文中.另外,为了增加安全性,应该使用https.

在get请求中,这些参数作为URL的一部分发送.但是在https中,正如我所理解的那样,正文和标题都是加密的.

所以从理论上讲,无论你使用https post还是get for send,你的数据都是安全的......在一种情况下,攻击者必须在你的标题和你的身体其他部分进行描述.

所以我的问题是,如果这一切都是真的,那么帖子怎么更安全?

https http-get http-post http-headers

4
推荐指数
1
解决办法
7445
查看次数