এক্সকোড 6 আইফোন সিমুলেটর অ্যাপ্লিকেশন সহায়তা অবস্থান


137

এক্সকোড In-এ আমার কাছে একটি অ্যাপ্লিকেশন রয়েছে যা আমি কোর ডেটা ব্যবহার করছি তবে আইওএস 8 আইফোন সিমুলেটারের জন্য অ্যাপ্লিকেশন সাপোর্টে কোনও ফোল্ডার নেই। আমার ফাইল এবং কোর ডেটা স্ক্লাইট ডাটাবেসটি কোথায় সংরক্ষণ করা হচ্ছে?


এই চেষ্টা করুন । একটি অ্যাপ্লিকেশন রয়েছে যা সর্বশেষ অ্যাপ্লিকেশন চালনার ডকুমেন্ট ডিরেক্টরি সরাসরি খোলায়।
এনএসআরওভার

আমি একটি উত্তর যুক্ত করেছি (অন্যান্য উত্তরগুলির নীচে) যা দেখায় যে কীভাবে প্রোগ্রামের মাধ্যমে যেখানে কোটার ডেটা ফাইলগুলি থাকে সেই পথটি পাবেন।
স্পোকেনডুড

এই লিঙ্কে একটি চেহারা আছে .. stackoverflow.com/questions/24133022/...
Tunvir রহমান তুষার

"এনএসটিম্পেরি ডিরেক্টরী ()" ব্যবহার করুন। এটি দেখুন
শুভেন্দু

উত্তর:


296

সিমুলেটর ডিরেক্টরিটি এক্সকোড 6 বিটা দিয়ে সরানো হয়েছে ...

~/Library/Developer/CoreSimulator

আপনার অ্যাপ্লিকেশানের ডকুমেন্টস ফোল্ডারে ডিরেক্টরিটি ব্রাউজ করা কিছুটা বেশি কষ্টকর, যেমন,

~/Library/Developer/CoreSimulator/Devices/4D2D127A-7103-41B2-872B-2DB891B978A2/data/Containers/Data/Application/0323215C-2B91-47F7-BE81-EB24B4DA7339/Documents/MyApp.sqlite

4
এটি সাধারণভাবে সঠিক তবে মনে হয় আরও অভ্যন্তরীণ ফোল্ডার পরিবর্তন রয়েছে। এটি সেই পথ যা আমার জন্য ~/Library/Developer/CoreSimulator/Devices/B2C6629C-998D-4E84-9ADB-06CAF5BA4B89/data/Containers/Data/Application/62593001-FADA-4647-AA80-FE9973956C05/Documents/
এক্সকোড

1
সংখ্যা বা বর্বর বাহিনীটি ডেটাতে যাওয়ার একমাত্র সুযোগ তা বোঝার কোনও উপায় আছে?
আমাদের 21

89
এনএসএলগ (@ "অ্যাপ্লিকেশন ডায়ার:% @", [[[এনএসফাইলম্যানেজার ডিফল্ট ম্যানেজার] ইউআরএলস জন্য ডিরেক্টরি: এনএসডোকামেন্টডাইরেক্টরি ইনডোমাইনস: এনএসউজারডোমাইনমাস্ক] লাস্টঅবজেক্ট]); - ডেটা ফোল্ডারের পুরো পথটি মুদ্রণ করবে
আমাদের

2
দ্রুত ডিবাগিংয়ের জন্য আমার অ্যাপ্লিকেশনটির নথি ডিরেক্টরিতে একটি অবিরাম শর্টকাট দরকার। অ্যাপ্লিকেশনটির পরে ফিনিশলঞ্চিং উইথঅপশনস। #if DEBUG NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; NSString *aliasPath = [NSString stringWithFormat:@"XCodePaths/%@", appName]; remove([aliasPath UTF8String]); [[NSFileManager defaultManager]createSymbolicLinkAtPath:aliasPath withDestinationPath:DOCS_DIR error:nil]; #endif এখন আমি একটি সিমিলিংক পেয়েছি যা আইওএস 8 + এক্সকোডি 6 প্রতিবার তৈরি করার পরে আমার অ্যাপের ডেটা জিইউডি পরিবর্তন করে।
সমুদ্রপথ

32
xcrun simctl listকমান্ড কাল্পনিক নাম এবং ডিভাইস UDIDs মধ্যে চিঠিপত্রের দেখতে ব্যবহার করা যাবে। বা আরও নির্দিষ্টভাবে xcrun simctl list devicesকমান্ড।
টমাস ডাব্লু

36

আমি আপনাকে পরামর্শ দেব যে আপনি সিমপোল্ডারগুলি আপনার সিমুলেটর ফাইলগুলি সন্ধান করতে ব্যবহার করুন । এটি একটি মেনু বার আইটেম যা আপনার সিমুলেটর অ্যাপ্লিকেশনগুলি ট্র্যাক করে এবং আপনাকে সরাসরি তাদের ফোল্ডার এবং সামগ্রীতে যেতে দেয়। এটা অসাধারণ.


আমি ইয়োসেমাইটে সিমপোল্ডার 2 নিয়ে সমস্যাও ছিলাম, তাই সিমুলেটর এবং আপনি যে অ্যাপ্লিকেশনটি চান সেটিতে আপনাকে ফাইন্ডার উইন্ডোটি সন্ধান করতে এবং খুলতে সহায়তা করার জন্য আমি একটি কমান্ড লাইন স্ক্রিপ্ট শুরু করেছি। এটি সমস্ত সিমুলেটর ফোল্ডার এবং অ্যাপ্লিকেশনগুলির তালিকা তৈরি করতে ফোল্ডার এবং মেটাডেটা প্লাস্টগুলির মধ্য দিয়ে যায়। আগ্রহী হলে, এটি এখানে দেখুন
রডরিগো লিমা

সিমপোল্ডার্স 2 ইয়োসেমাইটে কাজ করে তবে এটি কিছুটা ধীর হয়; একবার আপনি স্ট্যাটাস বারে আইকনটি ক্লিক করুন, কয়েক সেকেন্ড অপেক্ষা করুন এবং এটি প্রদর্শিত হবে।
জেসন

হু ইওসেমাইট + এক্সকোড 6.3 এর সাথে দুর্দান্ত এবং সর্বশেষতম কাজগুলি!
TruMan1

21

আমি সিমুলেটার ম্যানেজার অ্যাপ্লিকেশনটি খুব দরকারী। এটি আপনাকে ইনস্টলড সিমুলেটরগুলির অ্যাপ্লিকেশন ফোল্ডারে সরাসরি নিয়ে যায়। আমি 7.1, 8.0 এবং 8.1 সিমুলেটর দিয়ে চেষ্টা করেছি।

সিমুলেটর ম্যানেজার সিস্টেম ট্রেতে একটি আইকন হিসাবে বাস করে এবং "লগইন এট লগইন" বিকল্প সরবরাহ করে।

এখানে চিত্র বর্ণনা লিখুন

দ্রষ্টব্য : এটি কেবল এক্সকোড 6 (আমার ক্ষেত্রে 6.1.1) এবং তারপরের সাথে কাজ করে।

আশা করি এইটি কাজ করবে!


আমার, আপনি সিমুলেটার ম্যানেজারটি কীভাবে ইনস্টল করবেন? আমি ভেবেছিলাম এটি এক্সকোডের একটি প্লাগইন তবে এটি একটি
এক্সকোড

1
উপরের বারে নির্বাচন করুন: পণ্য -> সংরক্ষণাগার -> এবং তারপরে পুনরায় সই না করে সংরক্ষণাগারটি ম্যাক অ্যাপ্লিকেশন হিসাবে রফতানি করুন (শেষ বিকল্প) আপনি একটি অ্যাপ্লিকেশন ফাইল পাবেন যা আপনি আপনার অ্যাপ্লিকেশন ফোল্ডারে একটি সাধারণ অ্যাপ্লিকেশনের মতো রাখতে পারেন। ..
হেকসচিবি

11

আপনার AppDelegate.m এ আপনার .sqlite ফাইলটি কোথায় সঞ্চয় করা আছে তা জানতে নিম্নলিখিত কোডটি যুক্ত করুন

- (NSURL *)applicationDocumentsDirectory
{
    NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory      inDomains:NSUserDomainMask] lastObject]);

    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory     inDomains:NSUserDomainMask] lastObject];
 }

এখন AppDelegate.m এ এই পদ্ধতিটি কল করুন

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

  //call here
   [self applicationDocumentsDirectory];

}

দুর্দান্ত .. বিশেষত কার্যকর যখন সেখানে একাধিক সিমুলেটর থাকে
ইয়াসিথা ওয়াডুগ

6

এটি দ্রুতগতির জন্য আমার জন্য কাজ করেছে:

let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
println("App Path: \(dirPaths)")

3

আমি কিছু সময়ের জন্য এই সাথে কুস্তি। এটি কেবল আমার স্থানীয় স্ক্লাইট ডিবিতে পৌঁছানোর জন্য একটি বিশাল ব্যথা হয়ে ওঠে। আমি এই স্ক্রিপ্টটি লিখেছি এবং এটিকে একটি কোড স্নিপেটে এক্সকোডের মধ্যে তৈরি করেছি। আমি এটিকে আমার অ্যাপ্লিকেশন-এর ভিতরে রাখি।


//xcode 6 moves the documents dir every time. haven't found out why yet. 

    #if DEBUG 

         NSLog(@"caching documents dir for xcode 6. %@", [NSBundle mainBundle]); 

         NSString *toFile = @"XCodePaths/lastBuild.txt"; NSError *err = nil; 

         [DOCS_DIR writeToFile:toFile atomically:YES encoding:NSUTF8StringEncoding error:&err]; 

         if(err) 
            NSLog(@"%@", [err localizedDescription]);

         NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"];   

         NSString *aliasPath = [NSString stringWithFormat:@"XCodePaths/%@", appName]; 

         remove([aliasPath UTF8String]); 

         [[NSFileManager defaultManager] createSymbolicLinkAtPath:aliasPath withDestinationPath:DOCS_DIR error:nil]; 

     #endif

এটি আপনার ড্রাইভের মূলটিতে একটি সিমিলিংক তৈরি করে। (আপনাকে প্রথমে এই ফোল্ডারটি নিজেই তৈরি করতে হবে এবং এটি chmod করতে পারেন, বা আপনি অন্য কোনও জায়গায় স্থানটি পরিবর্তন করতে পারেন) তারপরে আমি xcodeway প্লাগইনটি ইনস্টল করেছি https://github.com/onmyway133/XcodeWay

আমি এটিকে কিছুটা সংশোধন করেছি যাতে এটি আমাকে কেবলমাত্র সিএমডি + ডি চাপতে দেয় এবং এটি আমার বর্তমান অ্যাপ্লিকেশনটির অবিরাম নথির ডিরেক্টরিতে একটি সন্ধানকারীকে খুলে দেবে। এইভাবে, এক্সকোড আপনার পথটি কতবার পরিবর্তন করে তা বিবেচনা করে না, এটি কেবল রানেই পরিবর্তিত হয় এবং এটি প্রতিটি রান করার সাথে সাথেই আপনার সিমিলিংকে আপডেট করে।

আমি এটি অন্যদের জন্য দরকারী আশা করি!


ধন্যবাদ, আমি মাত্র আইওএস 8 সিমুলেটর ফোল্ডারটি সমর্থন করতে এক্সকোডওয়ে আপডেট করেছি
onmyway133

3

অনুসন্ধানকারী> গ্রন্থাগার> বিকাশকারী> কোরসিমুলেটর> ডিভাইসগুলি খুলুন

তারপরে ফাইন্ডার থেকে অ্যারেঞ্জমেন্ট আইকনটি নির্বাচন করুন তারিখ যুক্ত করুন

আপনার অ্যাপ্লিকেশন> ডেটা> ধারক> ডেটা> অ্যাপ্লিকেশন> নির্বাচন করুন

আপনার অ্যাপ নির্বাচন করুন> নথি> আপনার ডিবি ফাইলটি এখানে

আমার ক্ষেত্রে:

/Users/pluto/Library/Developer/CoreSimulator/Devices/A75107D2-A535-415A-865D-978B2555370B/data/Containers/Data/Application/265A12BC-FF5B-4235-B5EF-6022B83754B4/Documents/dboPhotoBucket.sqlite

অন্যথায় এটি করুন:

NSLog(@"app dir: %@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]); 

- এটি ডেটা ফোল্ডারের পুরো পথটি মুদ্রণ করবে।

সুইফট:

let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
println("App Path: \(dirPaths)")

সুইফট 3.0:let dirPaths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) print("App Path: \(dirPaths)")
পরমাণুবুলিয়ান

2

ফাইন্ডার ব্যবহার করুন -> ফোল্ডারে যান এবং অ্যাপ্লিকেশন ফোল্ডারে পৌঁছানোর জন্য প্রদত্ত বেসপ্যাথটি প্রবেশ করুন

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;

NSLog(@"%@",basePath);

1

সিমুলেটর ফাইলটি ~ / লাইব্রেরি / বিকাশকারী / কোরসিমুলেটর / ডিভাইস / ... এ রাখে তবে / ডিভাইসগুলির পরে পাথ সবার জন্য আলাদা।

এই সহজ পদ্ধতি ব্যবহার করুন। এটি বর্তমান ব্যবহারকারীর জন্য অস্থায়ী ডিরেক্টরিটির পথ ফেরায় এবং কোনও যুক্তি নেয় না।

NSString * NSTemporaryDirectory ( void );

সুতরাং আমার ভিউকন্ট্রোলার ক্লাসে আমি সাধারণত আমার ভিউডিডলডে এই লাইনটি কেবলমাত্র একটি রেফারেন্সের জন্য রাখি যখন আমার কোরিডাটা সঞ্চিত ফাইলটি ধরতে হবে। আশাকরি এটা সাহায্য করবে.

  NSLog(@"FILE PATH :%@", NSTemporaryDirectory());

(দ্রষ্টব্য: পথে যেতে, ফাইন্ডার মেনু থেকে গোতে ক্লিক করুন এবং লুকানো ডিরেক্টরি খোলার জন্য ~ / লাইব্রেরি টাইপ করুন তারপরে ফাইন্ডার উইন্ডোতে আপনি আপনার কনসোলে প্রদর্শিত পথটিতে ক্লিক করতে পারেন))


1

এই অবস্থানটি আবারও পরিবর্তিত হয়েছে, যদি সুইফ্ট ব্যবহার করা হয়, ফোল্ডারটি কোথায় রয়েছে তা জানতে এটি ব্যবহার করুন (অ্যাপল আপনার জন্য তৈরি করা অ্যাপডেলিগেট.সুইফ্ট ফাইল থেকে এটি অনুলিপি করা হয়েছে, যদি এটি আপনার মেশিনে কাজ না করে তবে অনুসন্ধান করুন) ডান সিনট্যাক্সের জন্য সেই ফাইলটি, এটি এক্সকোড 6.1 এবং আইওএস 8 সিমুলেটর ব্যবহার করে খনিতে কাজ করে):

let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
println("Possible sqlite file: \(urls)")

1

সিমুলেটরগুলি এর অধীনে অবস্থিত:

~/Library/Developer/CoreSimulator/

এখানে, তারা ইউআইডি নাম সহ ডিরেক্টরি হিসাবে তালিকাভুক্ত করা হয়। সর্বশেষতমটি সন্ধান করতে 'তারিখ সংশোধিত তারিখ' অনুসারে বাছাই করুন। ভিতরে নেভিগেট এ:

/data/Containers/Data/Application/

এখানে আপনি সেই ডিভাইসে সমস্ত অ্যাপ্লিকেশনগুলির একটি তালিকা পাবেন। সর্বশেষ অ্যাপটি পেতে আপনি এটি আবার বাছাই করতে পারেন।

দ্রষ্টব্য: আপনি যখন অ্যাপটি চালাবেন তখনই কোডকোড ডিরেক্টরিটির নাম পরিবর্তন করে, তাই ডেস্কটপে আলেম / শর্ট কাট তৈরির উপর নির্ভর করবেন না।

সবচেয়ে সহজ উপায় হ'ল অ্যাপটি এখানে ব্যবহার করা যা স্বয়ংক্রিয়ভাবে সবকিছু করে।


1

আমি এই স্ক্রিপ্টটি তৈরি করেছি যা কোনও সিমুলেটারের জন্য নির্মিত সর্বশেষ অ্যাপ্লিকেশনটি জিপ করে ডেস্কটপটিতে জিপ করবে।

https://gist.github.com/Gerst20051/8ca49d5afbf09007b3696fab6e9f425c

#!/bin/bash

DESTINATION_DIR="$HOME/Desktop"
APP_PATH=$(find ~/Library/Developer/CoreSimulator/Devices/*/data/Containers/Bundle/Application/*/*.app -type d -maxdepth 0 -print0 | xargs -0 ls -td | head -n1)
APP_DIRNAME=$(dirname "$APP_PATH")
APP_BASENAME=$(basename "$APP_PATH")
FILE_NAME="${APP_BASENAME%.*}"

cd "$APP_DIRNAME"
zip -qr "$DESTINATION_DIR/$FILE_NAME.zip" "$APP_BASENAME"

1

সুইফট 4 বা সুইফ্ট 5 এ আপনি ব্যবহার করতে পারেন NSHomeDirectory()

এক্সকোড 10 (বা এক্সকোড 11) এর সহজতম উপায় হ'ল আপনার অ্যাপ্লিকেশনটিকে বিরতি দেওয়া (যেমন এটি ব্রেকআপপয়েন্টে আঘাত হানে) এবং ডিবাগার কনসোলে এই লাইনটি চালানো:

po NSHomeDirectory()

po মুদ্রণ অবজেক্ট এবং প্রিন্ট বেশিরভাগ জিনিস


0
 1.   NSTemporaryDirectory() gives this:

    /Users/spokaneDude/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/199B1ACA-A80B-44BD-8E5E-DDF3DCF0D8D9/tmp

 2. remove "/tmp" replacing it with "/Library/Application Support/<app name>/"  --> is where the .sqlite files reside

0
  1. সুইফট 4 এর সাহায্যে আপনি আপনার অ্যাপের হোম ডিরেক্টরি পেতে নীচের কোডটি ব্যবহার করতে পারেন। আপনার অ্যাপ্লিকেশনটির নথি ডিরেক্টরি সেখানে রয়েছে।

    print(NSHomeDirectory())

  2. আমি মনে করি আপনি ইতিমধ্যে জানেন যে আপনার অ্যাপের হোম ডিরেক্টরিটি পরিবর্তনযোগ্য, তাই আপনি যদি নিজের কোডবেসে অতিরিক্ত কোড যুক্ত করতে না চান তবে সিমপোল্ডার আপনার জন্য একটি দুর্দান্ত সরঞ্জাম।

  3. আরও আরও, আপনি ভাবতে পারেন যে এমন কোনও সরঞ্জাম রয়েছে যা আপনার অ্যাপ্লিকেশনটির হোম ডিরেক্টরি পরিবর্তন করার পরে প্রতিবার একই এসকিউএলাইট ডাটাবেসটি বন্ধ এবং পুনরায় খোলা থেকে সময় বাঁচাতে সহায়তা করে। এবং উত্তর হ্যাঁ, আমি জানি একটি সরঞ্জাম এসকিউএলাইটফ্লো । এর নথি থেকে, এটি বলে যে:

    ডাটাবেস ফাইলের নাম বা ডিরেক্টরি পরিবর্তনগুলি হ্যান্ডেল করুন। এটি এসকিউএলফ্লো আইওএস সিমুলেটারে আপনার এসকিউএল ডাটাবেসের সাথে বন্ধুত্বপূর্ণ কাজ করতে পারে।


0

এখানে সর্বশেষ ব্যবহৃত সিমুলেটর এবং অ্যাপ্লিকেশনটির জন্য sh is স্রেফ চালান এবং ছাপানো পাঠ্যটি অনুলিপি করুন এবং ফাইন্ডারে প্রদর্শনের জন্য কমান্ড পেস্ট করুন এবং রান করুন।

#!/bin/zsh

lastUsedSimulatorAndApplication=`ls -td -- ~/Library/Developer/CoreSimulator/Devices/*/data/Containers/Data/Application/*/ | head -n1`

echo $lastUsedSimulatorAndApplication
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.