2017-01-13 12 views
0

私は配列の文字列値appを取得したいと考えました。例として(SLGoogleAuth、HalfTunes、TheBackgrounder、Calculiator)しかし、どのようにするか分からない? これはコードです。あなたはそれを解析する必要はありません事前この文字列の値だけを解析して取得する方法

答えて

0

enter image description here

ありがとう:

@implementation ViewController 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
//  
    Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace"); 
    SEL selector=NSSelectorFromString(@"defaultWorkspace"); 
    NSObject* workspace = [LSApplicationWorkspace_class performSelector:selector]; 
    SEL selectorALL = NSSelectorFromString(@"allApplications"); 
    NSLog(@"apps: %@", [workspace performSelector:selectorALL]); 
} 

それは出力です。 NSLogはオブジェクトの説明を出力します。その値に直接アクセスする必要があります。

[LSApplicationWorkspace allApplications]; 

はLSApplicationProxyのNSArrayを返します。 LSApplicationProxyクラスには、必要な情報が含まれているivar _bundleURLがあります。アクセスするにはランタイム関数が必要です。以下の作業例:

// #import <objc/runtime.h> 
    Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace"); 
    SEL selector=NSSelectorFromString(@"defaultWorkspace"); 
    NSObject* workspace = [LSApplicationWorkspace_class performSelector:selector]; 
    SEL selectorALL = NSSelectorFromString(@"allApplications"); 
    NSArray* appProxies = [workspace performSelector:selectorALL]; 

    Ivar bundleUrlIvar = class_getInstanceVariable([appProxies.firstObject class], "_bundleURL"); 

    NSMutableString* result = [NSMutableString string]; 
    for (id appProxy in appProxies) 
    { 
     NSURL* url = object_getIvar(appProxy, bundleUrlIvar); 
     // at this point you have the information and you can do whatever you want with it 
     // I will make it a list as you asked 
     if (url) 
     { 
      [result appendFormat:@",%@", [url lastPathComponent]]; 
     } 
    } 

    if (result.length > 0) 
    { 
     // remove comma from beginning of the list 
     [result deleteCharactersInRange:NSMakeRange(0, 1)]; 
    } 


    NSLog(@"apps: %@", result); 

これは、非公開APIを使用している場合にAppStoreによって拒否されることに注意してください。したがって、あなた自身の裁量で使用してください。

+0

私は配列の結果をどうやって理解できないのかというと、おそらくあなたはテーブルビューを行う方法を知っています。 – vlad5ss

+0

オンラインでチュートリアルを見つける必要があります。 https://www.raywenderlich.com/143828/macos-nstableview-tutorial – Joey

+0

結果が私を助けてくれますか?私は配列を持っていますか? – vlad5ss

関連する問題