gpt4 book ai didi

nsarray - 在UIPasteboard中存储NSArray

转载 作者:行者123 更新时间:2023-12-04 18:13:03 25 4
gpt4 key购买 nike

我有几个文本文件,我想在2个应用程序之间传输。 (即同一应用的免费和付费版本)。

我正在使用UIPasteboard来执行此操作。文件的内容以NSArrays的形式保存在内存中,因此我想将这些NSArrays复制到粘贴板(精简版),然后从粘贴板读取它们(完整版)。

由于某些原因,无法从粘贴板读取数据。数据以NSData对象而不是NSArray的形式返回,我认为这意味着它不是我正在使用的粘贴板类型的必需格式,即“public.utf8-plain-text”。

当我使用这种粘贴板类型读取/写入NSString时,它可以正常工作。

我搜索了Apple文档等内容,以查看是否应该为NSArrays(或其他属性列表对象)使用其他类型,但画了一个空白。

写入粘贴板:(在下面的pDataOutput中是一个字符串数组,文件内容):

NSMutableArray *lArrayCopy = [gGlobalData.cPasteBoard.items mutableCopy];
[lArrayCopy replaceObjectAtIndex:pDataFileIdx
withObject:[NSDictionary dictionaryWithObject:pDataOutput
forKey:@"public.utf8-plain-text"]];
gGlobalData.cPasteBoard.items = lArrayCopy;
[lArrayCopy release];

从粘贴板读取:
NSArray *lPBItems = [pPasteBoard valuesForPasteboardType:@"public.utf8-plain-text"
inItemSet:nil];
NSLog(@"PB Items = NSArray of count %d", lPBItems.count);

以上返回:
PB Items = NSArray of count 0

如上所述,如果以NSString形式编写,它将以NSString形式正确返回数据。

任何帮助将不胜感激。
谢谢
斯蒂芬·C

最佳答案

我遇到了同样的问题,我认为valueForPasteboardType系列方法已损坏,并且始终返回NSData。
这是我的解决方案:

NSArray * lArrayFromPasteBoard = [pPasteBoard valueForPasteboardType:@"com.my.custom.type"];
if ([lArrayFromPasteBoard isKindOf:[NSData class]])
{
lArrayFromPasteBoard = [[NSPropertyListSerialization propertyListWithData:(NSData*)lArrayFromPasteBoard options:0 format:0 error:0];
}

希望这将使它如此,一旦苹果修复了他们的错误,if中的代码将不再被调用

关于nsarray - 在UIPasteboard中存储NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9164278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com