[英]iOS Keyboard Extension(App Groups)
i have a question about Keyboard Extension
.我有一个关于
Keyboard Extension
的问题。
Container app has many images.(ex > 100 images and total 100MB) and container app has saved using NSUserDefaults
.容器应用程序有很多图像。(例如 > 100 个图像,总共 100MB)并且容器应用程序已使用
NSUserDefaults
保存。
like this:像这样:
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];
and keyboard app gets image data from NSUserDefaults
.和键盘应用程序从
NSUserDefaults
获取图像数据。
Is it right way that container app send heavy size data to keyboard app?容器应用程序向键盘应用程序发送大量数据的方式是否正确?
In special case, when NSUserDefaults
instance accesses method(objectForKey:) in keyboard app, keyboard app crashed.在特殊情况下,当
NSUserDefaults
实例访问键盘应用程序中的 method(objectForKey:) 时,键盘应用程序崩溃。
The special case is :特殊情况是:
if image data size in NSUserDefaults
is bigger than about 30MB(not sure), keyboard app crashed and if the size is smaller than about 30MB, it works well.如果
NSUserDefaults
图像数据大小大于约 30MB(不确定),则键盘应用程序崩溃,如果大小小于约 30MB,则它运行良好。
Is there max size limit of NSUserDefaults? NSUserDefaults 是否有最大大小限制?
i just want like this app .我只想喜欢这个应用程序。
i want to know that i control heavy size data in keyboard app.我想知道我在键盘应用程序中控制大尺寸数据。
1) First you have to write image in Shared document directory. 1)首先你必须在共享文档目录中写入图像。
- (NSString *)getSharedLocationPath:(NSString *)appGroupName {
NSURL *groupContainerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.yourGroupName"];
return [groupContainerURL relativePath];
}
2) Write Image to above shared Directory. 2) 将图像写入上述共享目录。
NSString *path = [[self getSharedLocationPath:@"group.yourGroupName"] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",images]];
//Here fileData is your Image data.
[fileData writeToFile:path atomically:YES];
3) Exactly get this path to Keyboard Extension class same as above. 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.