Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在我的XCode项目中调用应用程序?_Iphone_Objective C - Fatal编程技术网

Iphone 如何在我的XCode项目中调用应用程序?

Iphone 如何在我的XCode项目中调用应用程序?,iphone,objective-c,Iphone,Objective C,我想知道如何在XCode for iPhone OS中用Objective-C语言编写程序,我想从另一个应用程序(它是一个调用应用程序,其功能只是调用hello world应用程序)调用一个应用程序(例如:hello world)。如何在呼叫应用程序中给出hello world的路径,以及在何处放置我的hello world应用程序(我的意思是,我应该在我的项目中导入hello world,还是只在呼叫应用程序中指定其URL)?请给出一个编码示例???请参见: 这是第二个应用程序必须执行的操作,

我想知道如何在XCode for iPhone OS中用Objective-C语言编写程序,我想从另一个应用程序(它是一个调用应用程序,其功能只是调用hello world应用程序)调用一个应用程序(例如:hello world)。如何在呼叫应用程序中给出hello world的路径,以及在何处放置我的hello world应用程序(我的意思是,我应该在我的项目中导入hello world,还是只在呼叫应用程序中指定其URL)?请给出一个编码示例???

请参见:

这是第二个应用程序必须执行的操作,以处理来自第一个应用程序的打开调用:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    if ([[url scheme] isEqualToString:@"todolist"]) {
        ToDoItem *item = [[ToDoItem alloc] init];
        NSString *taskName = [url query];
        if (!taskName || ![self isValidTaskString:taskName]) { // must have a task name
            [item release];
            return NO;
        }
        taskName = [taskName stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        item.toDoTask = taskName;
        NSString *dateString = [url fragment];
        if (!dateString || [dateString isEqualToString:@"today"]) {
            item.dateDue = [NSDate date];
        } else {
            if (![self isValidDateString:dateString]) {
                [item release];
                return NO;
            }
            // format: yyyymmddhhmm (24-hour clock)
            NSString *curStr = [dateString substringWithRange:NSMakeRange(0, 4)];
            NSInteger yeardigit = [curStr integerValue];
            curStr = [dateString substringWithRange:NSMakeRange(4, 2)];
            NSInteger monthdigit = [curStr integerValue];
            curStr = [dateString substringWithRange:NSMakeRange(6, 2)];
            NSInteger daydigit = [curStr integerValue];
            curStr = [dateString substringWithRange:NSMakeRange(8, 2)];
            NSInteger hourdigit = [curStr integerValue];
            curStr = [dateString substringWithRange:NSMakeRange(10, 2)];
            NSInteger minutedigit = [curStr integerValue];

            NSDateComponents *dateComps = [[NSDateComponents alloc] init];
            [dateComps setYear:yeardigit];
            [dateComps setMonth:monthdigit];
            [dateComps setDay:daydigit];
            [dateComps setHour:hourdigit];
            [dateComps setMinute:minutedigit];
            NSCalendar *calendar = [NSCalendar currentCalendar];
            NSDate *itemDate = [calendar dateFromComponents:dateComps];
            if (!itemDate) {
                [dateComps release];
                [item release];
                return NO;
            }
            item.dateDue = itemDate;
            [dateComps release];
        }

        [(NSMutableArray *)self.list addObject:item];
        [item release];
        return YES;
    }
    return NO;
}
第一个应用程序会像这样打开它:

NSURL *myURL = [NSURL URLWithString:@"todolist://www.acme.com?Quarterly%20Report#200806231300"];
[[UIApplication sharedApplication] openURL:myURL];

这就是故事的大部分。被调用的应用程序还需要在其info.plist(在您的示例中,使用“todolist”)中注册URL协议,如下所述:非常感谢。。。嘿,但是todolist作为目录存储在本地磁盘的某个地方,对吗???然后将其命名为://www.acme.com?季刊%20Report#200806231300“];例如,如果在路径://macintosh HD/Users/home/todolist中保存我的todolist应用程序,我可以将上述代码写成NSURL URLWithString:@“todolist://:///macintosh HD Users/home/todolist吗"]; 请告诉我这是校准todolist应用程序的正确方法吗?嗨,Mahboudz,我应该在哪里注册URLtype。。。在todolist应用程序或调用todolist的应用程序中???在todolist应用程序的info.plist中注册URL类型,如Justin所述。请参阅Apple链接:“要为应用程序注册URL类型,必须指定CbundleUrlTypes属性的子属性,该属性在“信息属性列表”中引入CbundleUrlTypes属性是应用程序Info.plist文件中的一个字典数组,每个字典定义了应用程序支持的URL类型。“–mahboudz 0秒前我相信,在URL中,只有“todolist:”是启动应用程序所必需的,其余的用于向该应用程序发送数据。你不需要知道你的应用程序的路径或者类似的东西。