小编KDM*_*KDM的帖子

iOS EKEvent Store在循环中重新创建iCloud日历,不会保存本地.

我有一个奇怪的问题EKEventStore,iCloud和本地日历.如果启用了iCloud,则会创建日历并将事件保存到日历中,如您所料.如果iCloud关闭并且您尝试保存事件没有任何反应,则设备会每隔3-5秒继续创建一个循环中的iCloud日历,直到iCloud重新打开,然后所有这些日历都会作为重复内容涌入iCloud.我正在使用几乎所有在这里引用的确切代码以及Apples Docs.我完全难以理解为什么它不起作用,而且一般来说EKEventStore上的文档似乎很少.

//••••••••••••••••••••••••••••••••••••••• pragma mark - 保存事件//•••••••••••••••••••••••••••••••••••••••••• ••••

-(void)saveEventWithDate:(NSDate *)startDate endDate:(NSDate *)endDate
{
    AppData *theData = [self theAppData];

    if([self checkIsDeviceVersionHigherThanRequiredVersion:@"6.0"]) {
        [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { // iOS 6 Support

            if (granted){
                NSLog(@"Access Granted");
            } else {
                NSLog(@"Access Not Granted");
            }

        }];
    }

    EKEvent *event  = [EKEvent eventWithEventStore:eventStore];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    if ([eventStore calendarWithIdentifier:[defaults objectForKey:@"My Calendar"]] != nil) // Calendar Existed
    {
        event.calendar  = [eventStore calendarWithIdentifier:[defaults objectForKey:@"My Calendar"]];
        NSLog(@"Calendar Existed");

    } else { // Create Calendar …
Run Code Online (Sandbox Code Playgroud)

ios ekeventkit ekeventstore

5
推荐指数
2
解决办法
4467
查看次数

异步检测到断开挂起

我在Python 3.4中使用Asyncio,我将尝试解释我在这一点上正在做的事情以及导致问题的原因。

一方面,我有一个带阻塞操作的UDP连接框架,我要从该流中获取数据并创建以SSE格式传递给客户端的json。这一切都很好。

我遇到的问题是,如果我什么也不做,则无法正确处理客户端断开连接,而客户端断开连接,我将开始遇到此错误:

WARNING [selector_events:613] socket.send() raised exception.
Run Code Online (Sandbox Code Playgroud)

由于循环仍在运行,因此我一直在研究彻底打破循环并触发.close()的方法,但是我遇到的示例问题令我无法解决,而且在线资源也不多。

似乎实际可行的一个示例是尝试从客户端读取一行,并且如果该字符串为空字符串,则表示客户端已断开连接。

    while True:
        data = (yield from client_reader.readline())
        if not data: #client disconnected
            break
Run Code Online (Sandbox Code Playgroud)

但是,在大约十条消息之后,所有发送给客户端的消息都停止了,我认为这是因为如果我关闭了客户端,则挂起后,它挂在了“数据=(来自client_reader.readline()的产量)”上,那么它确实关闭了,并且“结束连接”确实被调用。任何想法为什么它可能会挂起?我认为目前我对Asyncio有一个很好的处理,但是这个让我感到困惑。

注意:location()和status()是我从UDP套接字获取信息的两个调用-我已经使用相同的代码成功运行了多个小时而没有出现问题-减去了客户端断开连接线。

clients = {}

def accept_client(client_reader, client_writer):
    task = asyncio.Task(handle_client(client_reader, client_writer))
    clients[task] = (client_writer)


def client_done(task):
    del clients[task]
    client_writer.close()
    log.info("End Connection")

log.info("New Connection")
task.add_done_callback(client_done)

@asyncio.coroutine
def handle_client(client_reader, client_writer):
    data = {'result':{'status':'Connection Ready'}}
    yield from postmessage(data,client_writer)
    while True:
        data = (yield from client_reader.readline())
        if not data: #client disconnected
            break
        data = yield from asyncio.wait_for(location(),
                                           timeout=1.0)
        yield …
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-asyncio

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

iOS检查JSON返回是否有Key

我发布了一些东西之后,我正在使用NSJsonSerialization来取回一个json返回.我要么得到正确的回报,要么得到:

{
"status":"false"
}
Run Code Online (Sandbox Code Playgroud)

在我尝试解析它之前,我需要检查是否收回了我的回复(因为如果我要求的密钥不存在它会崩溃)但是如果我检查

[whatever objectForKey:@"status"] == nil
Run Code Online (Sandbox Code Playgroud)

当它是零时它没关系,但是如果它不存在它会崩溃(因为我收回了我的其他回报)

我得到的崩溃就是这个,似乎NSJSONSerialzation将NSArray作为NSdictionary返回?:

2012-07-02 11:03:40.426 [9412:10703] -[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0x75f03f0
2012-07-02 11:03:40.429 [9412:10703] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0x75f03f0'
Run Code Online (Sandbox Code Playgroud)

我需要找出一种方法来了解我得到了哪些回报,以便我可以采取相应行动.

crash ios nsjsonserialization

2
推荐指数
1
解决办法
1320
查看次数