2016-11-04 59 views
1

即时消息userActivity.title没有得到任何东西,它变成零在appdelegate。检查下面,这用于在ios9中工作,我记得。我需要在attributeSet.title中设置Title,但它始终为零。在应用程序委托Ios10 swift 3核心聚光灯搜索不能得到nsuseractivity的标题

代码索引我的项目

let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeText as String) 
    attributeSet.title = "ALFRESCO" //restnombre //project[0] 
    attributeSet.contentDescription = "\(tipocomida)" 

    let item = CSSearchableItem(uniqueIdentifier: "\(restid)", domainIdentifier: "com.cgcompany.restaurants", attributeSet: attributeSet) 
    CSSearchableIndex.default().indexSearchableItems([item]) { (error: Error?) -> Void in 
     if let error = error { 
      print("Indexing error: \(error.localizedDescription)") 
     } else { 
      print("Search item successfully indexed!") 
     } 
    } 

代码

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool { 
     // if #available(iOS 9.0, *) { 

      print("CALLING CONTINUE USER ACT") 

     if userActivity.activityType == CSSearchableItemActionType { 
       print("ACT TYPE IS CSSEARCHABLEITEM") 

     var title = "NOTITLE" 
      if (userActivity.title) != nil { 
       title = userActivity.title! 
      } 


       if let uniqueIdentifier = userActivity.userInfo?[CSSearchableItemActivityIdentifier] as? String { 
       print ("Calling FROM SPOTLIGHTSEARCH") 


        let rootViewController = self.window!.rootViewController as! UINavigationController 
        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 

        let restaurantdetail = mainStoryboard.instantiateViewController(withIdentifier: "restaurant_detail2") as! VCviendorest 
        let detailurl = "http://www.urltoget.com/iphone/\(uniqueIdentifier)/fromiOSSearch.html" 

        restaurantdetail.IDREST = uniqueIdentifier 
        restaurantdetail.NOMBRERESTAURANT = "\(title)" //userActivity.title! 

        restaurantdetail.DETAILURL = detailurl 
        rootViewController.pushViewController(restaurantdetail, animated: true) 

       } 
      } 
    // } else { 
      // Fallback on earlier versions 
     // } 

     return true 
    } 

回答

2

我有同样的问题,因为你在我的iOS 10设备上的应用程序运行(上的XCode 7.1),之后夫妇测试,我需要将NSUserActivity与CSSearchableItemAttributeSet结合起来,并停止使用CSSearchableIndex的CSSearchableItem和indexSearchableItems方法。下面的代码:

// Config the attributeSet 
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeText as String) 
attributeSet.title = "ALFRESCO" //restnombre //project[0] 
attributeSet.contentDescription = "\(tipocomida)" 
attributeSet.identifier = "\(restid)" 

if #available(iOS 10, *) { 
    // Init user activity combining with the attribute set 
    let bundleId = NSBundle.mainBundle().bundleIdentifier ?? "" 
    let activity = NSUserActivity(activityType: "\(bundleId).spotlight") 
    activity.userInfo = [CSSearchableItemActivityIdentifier: attributeSet.identifier!] 
    activity.title = attributeSet.title 
    activity.eligibleForHandoff = false 
    activity.eligibleForSearch = true 
    activity.eligibleForPublicIndexing = true 
    activity.contentAttributeSet = attributeSet 
    activity.becomeCurrent() 
} else { 
    // continue using CSSearchableItem with your old code 
    // let item = CSSearchableItem(... 
} 

在您的应用程序代理,则需要更新的检查:

let activityType = (NSBundle.mainBundle().bundleIdentifier ?? "") + ".spotlight" 
if userActivity.activityType == CSSearchableItemActionType || userActivity.activityType == activityType { 
    // here for your code 
} 
+0

非常感谢! –