在我的iOS项目中,我有一个用于设置参数的JSON文件。我想提取用户的输入并将其用作参数。例如,用户填写其邮政编码,使用邮政编码更新JSON文件,并检索该邮政编码的数据。
如何通过用户的输入以编程方式更新项目中的JSON文件?
编辑:
基本上,这表示在我的主包中使用blockerList.json文件:
class ActionRequestHandler: NSObject, NSExtensionRequestHandling {
func beginRequestWithExtensionContext(context: NSExtensionContext) {
let attachment = NSItemProvider(contentsOfURL: NSBundle.mainBundle().URLForResource("blockerList", withExtension: "json"))!
let item = NSExtensionItem()
item.attachments = [attachment]
context.completeRequestReturningItems([item], completionHandler: nil);
}
}
如果我可以使用来自其他地方的JSON数据并让请求使用它,该怎么办?这可能吗,我将如何实现?对不起,这对我来说是新的。
答案 0 :(得分:1)
由于应用安全性和沙盒,应用程序包中的文件无法覆盖。但是,您可以更新存储在应用包外部的JSON,例如Documents
目录。
这是您保存数据的方式:
-(void)saveJSONWithData:(NSData *)data
{
NSString *documentsDiretory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSString *path = [documentsDiretory stringByAppendingFormat:@“/myData.json"];
[data writeToFile:path atomically:YES];
}
这是你将如何检索它:
NSString *fileName = @"myData.json”;
NSURL *documentsFolderURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSString *filePath = [documentsFolderURL.path stringByAppendingString:fileName];
NSString *jsonString = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];
NSError *jsonError;
NSMutableDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&jsonError];
因此,从技术上讲,在NDMutableDictionary中获取已保存的JSON,附加数据并保存。希望这有帮助!