iOS键盘扩展(应用程序组)

时间:2017-01-24 12:21:12

标签: ios objective-c ios-app-group ios-keyboard-extension

我对for (int i = 0; i < num - 1; i++) { String thisLast = ""; if (sentence[i].compareTo(sentence[i + 1]) > 0) { thisLast = sentence[i]; count++; } else if (sentence[i].compareTo(sentence[i + 1]) < 0) { thisLast = sentence[i + 1]; count++; } if (thisLast.compareTo(last) > 0) last = thisLast; } 有疑问。

容器应用有很多图片。(前&gt; 100张图片,总共100MB) 和容器应用已使用Keyboard Extension保存。

喜欢这样:

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实例访问键盘应用程序中的方法(objectForKey :)时,键盘应用程序崩溃。

特殊情况是:

如果NSUserDefaults中的图像数据大小大于30MB(不确定),键盘应用程序崩溃,如果大小小于30MB,则效果很好。

是否存在NSUserDefaults的最大大小限制?

我只想要this app

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

1 个答案:

答案 0 :(得分:1)

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.