Я использую подсказку (nolock), особенно в базах данных SQLServer 2000 с высокой активностью. Я не уверен, что это необходимо в SQL Server 2005. Недавно я добавил этот намек на SQL Server 2000 по просьбе клиента DBA, потому что он замечал множество блокировок записей SPID.
Все, что я могу сказать, заключается в том, что использование подсказки НЕ повредило нам и, похоже, решило проблему блокировки. DBA у этого конкретного клиента в основном настаивал на том, что мы используем подсказку.
Кстати, базы данных, с которыми я имею дело, являются справочными системами корпоративных медицинских заявок, поэтому мы говорим о миллионах записей и 20 + таблицы во многих объединениях. Обычно я добавляю подсказку WITH (nolock) для каждой таблицы в объединении (если только это не производная таблица, и в этом случае вы не можете использовать этот конкретный намек)
Оказывается, Xcode 6 действительно меняет UUID приложения каждый раз, и я не прав для хранения абсолютных путей.
ИСПОЛЬЗОВАТЬ SIMPHOLDERS
Я использовал это приложение на Xcode 5, открыв папку «Документы» для текущего приложения в симуляторе в Finder.
еще не готов к Xcode 6 (начиная с sep 24 2014), но сохраняет все эти проблемы.
В Xcode 6 / iOS8 Теперь пакет отдельно от данных. / GUID приложения регенерируется между прогонами в Xcode (не уверен, почему)
DOCUMENTS DIR:/Users/gbxc/Library/Developer/CoreSimulator/Devices/AC79941F-EC56-495E-A077-773EEE882732/data/Containers/Data/Application/C220D351-0BE7-46BA-B35E-D16646C61A3F/Documents
mainBundlePath_:/Users/gbxc/Library/Developer/CoreSimulator/Devices/AC79941F-EC56-495E-A077-773EEE882732/data/Containers/Bundle/Application/12200D1D-9B67-408B-BCF7-38206CBE0940/myappname.app/BLANK_BLOG_SCALED.jpg
1. НАЙТИ ПАПКУ УСТРОЙСТВ В СИМУЛЯТОРЕ
/Users/gbxc/Library/Developer/CoreSimulator/Devices/
откройте каждый /device.plist, чтобы узнать, какой GUID - какое устройство в XCode - я думаю, что это статический
3. НАЙДИТЕ УСТРОЙСТВО, на которой вы работаете на iPad 2 - я думаю, что это статический
/Devices/AC79941F-EC56-495E-A077-773EEE882732
4. Найти папку с вашим приложением / документами
/AC79941F-EC56-495E-A077-773EEE882732/data/Containers/Data/Application/C220D351-0BE7-46BA-B35E-D16646C61A3F/Documents
ОЧЕРИТЬ GUID C220D351-0BE7-46BA-B35E-D16646C61A3F регенерируется каждый раз, когда приложение запускается в XCode 6
NSArray *paths_ = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
if(paths_){
_docsDir = [paths_ firstObject];
DebugLog(@"DOCUMENTS DIR:%@",_docsDir);
}else{
ErrorLog(@"paths_ is nil - cant get Documents directory");
}
MAIN BUNDLE path
NSString *mainBundlePath_ = [[NSBundle mainBundle] pathForResource:@"someimageinyourbundle" ofType:@"jpg"];
/AC79941F-EC56-495E-A077-773EEE882732/data/Containers/Bundle/Application/12200D1D-9B67-408B-BCF7-38206CBE0940/clarksonsiq.app/BLANK_BLOG_SCALED.jpg
НИКОГДА НЕ СКАЧАТЬ ПУТЬ в / Документы между запусками будут меняться.
Я сериализовал его на plist и не мог понять, почему они продолжали исчезать
Указанный GUID / Документы постоянно меняются между прогонами, но если у вас есть / Документы, открытые в Finder, папка остается открытой.
https://devforums.apple.com/thread/235911?tstart=0
https://devforums.apple.com/thread/238754?tstart=0
Свободное решение
Использование библиотеки с открытым исходным кодом OpenSim . OpenSim - альтернатива с открытым исходным кодом для SimPholders, написанная в Swift.
Платное решение
Используйте приложение SimPholder, чтобы узнать текущее местоположение приложения.
[/g7]
Вам нужно сохранить только путь внутри DocumentDirectory (имя каталога / файла) и добавить его в DocumentDirectory каждый раз при загрузке файла ...
-(void)saveImage:(UIImage *)image{
NSData *pngData = UIImagePNGRepresentation(image);
NSString *pathInDocumentDirectory = [APP_DocumentDirectory stringByAppendingPathComponent:PROFILE_IMAGE_NAME];
NSString *filePath = [self documentsPathForFileName:pathInDocumentDirectory];
//Save pic file path - DirName/Filename.png
[XYZPreferencesHelper setUserImageFilePath:pathInDocumentDirectory];
//Write the file
[[NSFileManager defaultManager] createFileAtPath:filePath contents:pngData attributes:nil];
}
-(void)loadSavedUserPicture{
//Load saved DirName/Filename.png
NSString *pathInDocumentDirectory = [XYZPreferencesHelper getUserImageFilePath];
if (pathInDocumentDirectory != nil){
//Full path with new app Document Directory
NSString *filePath = [self documentsPathForFileName:pathInDocumentDirectory];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
NSData *pngData = [NSData dataWithContentsOfFile:filePath];
UIImage *image = [UIImage imageWithData:pngData];
if (image != nil){
userPicImageView.image = image;
}
}
}
}
- (NSString *)documentsPathForFileName:(NSString *)name
{
NSString *documentsPath = [self createRestcallDirectoryIfNotExist];
return [documentsPath stringByAppendingPathComponent:name];
}
-(NSString *)createRestcallDirectoryIfNotExist{
NSString *path;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
path = [documentsPath stringByAppendingPathComponent:APP_DocumentDirectory];
NSError *error;
if (![[NSFileManager defaultManager] fileExistsAtPath:path]) //Does directory already exist?
{
if (![[NSFileManager defaultManager] createDirectoryAtPath:path
withIntermediateDirectories:NO
attributes:nil
error:&error])
{
NSLog(@"Create directory error: %@", error);
}
}
return documentsPath;
}
Я могу подтвердить, что это Xcode 6, связанный не с iOS 8.
У меня есть две машины разработки. На одном из них у меня есть Xcode 5. Я работал все время на этой машине, и мой URL был в порядке (фотоприложение, фотографии видны).
Вчера я проверил в форме git мой источник на машине с Xcode 6. Я заметил, что мои фотографии больше не видны, только фотографии, созданные во время этого сеанса приложения.
После небольшой отладки я понял, что файл: /// var / mobile / Applications / B6A6BAEF-C90C-4A2A-93DB-E6700B88971F / Документы / меняются при каждом запуске приложения.
Все это время я работаю с устройством iOS 7.
Я собираюсь проверить один раз больше на машине с Xcode 5, чтобы подтвердить, когда я получу ее.