繁体   English   中英

iOS 键盘扩展(应用组)

[英]iOS Keyboard Extension(App Groups)

我有一个关于Keyboard Extension的问题。

容器应用程序有很多图像。(例如 > 100 个图像,总共 100MB)并且容器应用程序已使用NSUserDefaults保存。

像这样:

NSMutableArray* arr = [NSMutableArray new];

for(NSInteger i = 0; i < 100; i++)
{
    UIImage* img = [UIImage imageNamed:[NSString stringWithFormat:@"img%ld",i]];
    NSData* data = UIImagePNGRepresentation(image);
    [arr addObject:data]
}

NSUserDefaults* ud = [[NSUserDefaults alloc] initWithSuiteName:@"<group identifier>"];
[ud setObject:arr forKey:@"image_data"];
[ud synchronize];

和键盘应用程序从NSUserDefaults获取图像数据。

容器应用程序向键盘应用程序发送大量数据的方式是否正确?

在特殊情况下,当NSUserDefaults实例访问键盘应用程序中的 method(objectForKey:) 时,键盘应用程序崩溃。

特殊情况是:

如果NSUserDefaults图像数据大小大于约 30MB(不确定),则键盘应用程序崩溃,如果大小小于约 30MB,则它运行良好。

NSUserDefaults 是否有最大大小限制?

我只想喜欢这个应用程序

我想知道我在键盘应用程序中控制大尺寸数据。

1)首先你必须在共享文档目录中写入图像。

- (NSString *)getSharedLocationPath:(NSString *)appGroupName {
    NSURL *groupContainerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.yourGroupName"];
    return [groupContainerURL relativePath];
}

2) 将图像写入上述共享目录。

    NSString *path = [[self getSharedLocationPath:@"group.yourGroupName"] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",images]];
   //Here fileData is your Image data.
   [fileData writeToFile:path atomically:YES];

3) 准确获取与上述相同的键盘扩展类的路径。

- (NSString *)getSharedLocationPath:(NSString *)appGroupName {
    NSURL *groupContainerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.yourGroupName"];
    return [groupContainerURL relativePath];
}
//Here get content of directory from shared document directory. 
NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[self getSharedLocationPath:@"group.yourGroupName"] error:NULL];
    for (Count = 0; Count < (int)[directoryContent count]; Count++)
    {
        NSLog(@"File %d: %@", (Count + 1), [directoryContent objectAtIndex:Count]);
    }
//Now you get your images from app shared directory.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM