我找到了这些斯坦福大学的教程https://itunes.apple.com/us/course/ipad-iphone-app-development/id495052415,并且一直在听关于核心数据的讲座,这真的很棒.
它显示了如何通过UIManagedDocument... 访问核心数据只有我不明白UIManagedDocument它应该知道它应该使用哪个模型,因为我没有看到它设置在任何地方?
在使用时总结一下UIManagedDocument,如何定义将要使用的数据库模型?
我正在尝试做类似Tile.app的事情。显示通知时,它会播放声音。这似乎很简单-使用UILocalNotification并包含声音文件名。但是本地通知将声音限制为不超过30秒,而Tile的声音会持续播放更长的时间。我希望它正在循环,并且一直持续到我再也受不了噪音为止。
即使手机的静音开关打开,声音也会播放,这在本地通知中不会发生。由于这些原因,UILocalNotification似乎已经淘汰了。
我以为也许我可以发布仅文本的本地通知,然后让我的应用播放声音。但是使用时AVAudioPlayer,该play方法会返回NO并且声音不会播放。
其他问题表明这是设计使然,应用程序不应该能够播放来自背景的声音-只能继续播放已经播放的声音。我会接受该推理,但Tile会这样做,因此这显然是可能的。建议的一种解决方法违反了Apple的准则,我可以肯定的是,Apple现在可以进行检查。
一些可能相关的细节:
audio在Info.plist中有后台模式AVAudioSessionCategoryPlayback在音频会话上使用,并且该会话应该处于活动状态(至少setActive:error:声称成功)。bluetooth-central背景模式。我正在考虑在 iOS 应用中使用 Firebase。从功能上看,它看起来不错,但是有什么方法可以确保用户数据对开发人员保密?
我知道我可以要求身份验证并确保用户只能在应用程序中看到他们自己的数据。我也知道它使用 HTTPS。我担心的是,当我登录 Firebase 控制台时,我可以看到所有内容。我希望能够诚实地对用户说,他们的私有数据实际上是私有的,不仅来自其他用户,而且来自我和将来从事该项目的任何其他开发人员。
我不一定需要加密,但如果这是唯一的选择,那么我会考虑它。但我也不认为“私人”数据实际上是私人的,如果在应用程序上工作的任何人都可以随时浏览它。
嗨,我已经使用了属性类型transformable,我已经遵循论坛中的一个归档程序.
但它说
CoreData:警告:未找到实体'SurveyData'属性'survey'的类名为"SurveyResults"的NSValueTransformer 2013-04-30 09:44:16.022 TestReachability [11641:c07] - [SurveyApplication encodeWithCoder:]:无法识别的选择器已发送示例0x845cb00 2013-04-30 09:44:16.023 TestReachability [11641:c07] *由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [SurveyApplication encodeWithCoder:]:无法识别的选择器发送到实例0x845cb00'
这是我的代码
SurveyApplication *survey =[[SurveyApplication alloc]init];
survey.name=@"dheeraj";
survey.phone=@"573-356-2598";
NSManagedObject *aStory = [NSEntityDescription insertNewObjectForEntityForName:@"SurveyData"inManagedObjectContext:self.managedObjectContext];
[aStory setValue:survey forKey:@"survey"];
NSError *saveError = [[NSError alloc]init];
if (![self.managedObjectContext save:&saveError]) {
NSLog(@"%@",saveError);
}
Run Code Online (Sandbox Code Playgroud)
SurveyAppplication对象是我的自定义类,我试图创建一个对象然后存储它的核心数据.请你帮帮我.
谢谢Dheeraj
我正在尝试使用CloudKit查找用户记录ID.我已经确认帐户状态是CKAccountStatusAvailable.然后我试试这个:
[[CKContainer defaultContainer] fetchUserRecordIDWithCompletionHandler:^(CKRecordID *recordID, NSError *error) {
if (error == nil) {
NSLog(@"Got user record ID (no permission req): %@", recordID);
} else {
NSLog(@"Couldn't get user record ID, error=%@", error);
}
}];
Run Code Online (Sandbox Code Playgroud)
这不可避免地失败,结果如下:
(lldb) po error
<CKError 0x608000043990: "Not Authenticated" (9/1004); "Account couldn't get container scoped user id, no underlying error received">
(lldb) po [error userInfo]
{
NSDebugDescription = "CKInternalErrorDomain: 1004";
NSLocalizedDescription = "Account couldn't get container scoped user id, no underlying error received";
NSUnderlyingError = …Run Code Online (Sandbox Code Playgroud) 我看到使用Swift和Xcode 7.2的Core Data有一些非常奇怪的行为.下面是一个说明问题的动画.
我创建了一个名为"Person"的实体的简单示例,该实体只有一个"name"属性.我获取所有'Person'实体并在表视图中显示它们.如果我强制重新加载单元格,则显示包含名称的textLabel和NSManagedObject objectID而不显示名称.但是,objectID保持不变.这在设备和模拟器中都会发生.
我在"cellForRowAtIndexPath"中将Person实体的值打印到控制台,以便我可以在最初加载单元格时重新加载单元格时显示该值.
正如您所看到的,看起来NSManagedObject仍然存在,尽管它似乎丢失了对其"Person"子类的所有引用.
以下是受影响的ViewController的代码:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
let cellIdentifier = "PersonCell"
@IBOutlet weak var tableView: UITableView!
var people: NSArray = []
override func viewDidLoad() {
super.viewDidLoad()
people = fetchPeople()
}
func fetchPeople() -> NSArray {
let context = AppDelegate().managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "Person")
let sort = NSSortDescriptor(key: "name", ascending: true)
fetchRequest.sortDescriptors = [sort]
do {
let results = try context.executeFetchRequest(fetchRequest)
return results
} catch {
let error = error as NSError
print("\(error.domain) …Run Code Online (Sandbox Code Playgroud) 这类似于我昨天提出的问题,但我得到的答案在这种情况下似乎不起作用.
我从Core Location获得了以米为单位的海拔高度值.我想以本地化的形式显示这些内容.举个例子,我现在的海拔高度是海拔1839米.这应该显示为6033英尺.我能做的最好的MeasurementFormatter是"1.143英里".
let meters : Double = 1839
let metersMeasurement = Measurement(value: meters, unit: UnitLength.meters)
let measurementFormatter = MeasurementFormatter()
measurementFormatter.locale = Locale(identifier: "en_US")
let localizedString = measurementFormatter.string(from: metersMeasurement)
Run Code Online (Sandbox Code Playgroud)
.naturalScale回答我之前的问题的选项在这里没有帮助.我认为这是框架的限制,但我想知道是否有人现在有一个解决方法.
我已经定义的价格在我的CoreData对象的LineItem是一个双,但设置或使用的价值的价格,我只能用NSNumber的包装,这是CoreData是如何工作的,它只是罚款.
但是我在设置数字时发现了准确性问题.
例如,我有一个来自UITextField数字输入的double:
[self.lineItem setPriceValue:round([_finalPrice doubleValue]*100)/100]; // This actually trivial since it is already 83.99 as you see in the log but doesn't affect the result.
NSLog(@"Price to set: %@", _finalPrice);
NSLog(@"Price set: %@", [self.lineItem price]);
Run Code Online (Sandbox Code Playgroud)
这是日志:
2014-03-30 21:03:24.207 MyApp[20998:60b] Price to set: 83.99
2014-03-30 21:03:24.207 MyApp[20998:60b] Price set: 83.98999999999999
Run Code Online (Sandbox Code Playgroud)
这看起来像那些小数小故障之一,除了我没有真正使用过小数的事实.RestKit有可能在某处使用它,这是我无法控制的,但我对此表示怀疑.
同时它在我的应用程序中引起问题,因为它是一个商业应用程序,我与之交谈的API只读取83.98999999999999为83.98,在每个涉及这些有问题的数字的交易中造成一两次折扣.
我正在测试我的应用程序没有经过身份验证的iCloud帐户但是我在订阅设备时收到此错误通知:
subscription error<CKError 0x1700581e0: "Not Authenticated" (9/1002); "This request requires an authenticated account"; Retry after 3.0 seconds>
Run Code Online (Sandbox Code Playgroud)
这是好的,但我的问题是如何在尝试运行CKSubscription代码之前检查设备是否登录到iCloud?
我真的很感谢你的帮助.
是否有一种解决方法可以在核心数据中添加关系,而无需使用“图形编辑器”从一个实体拖动到另一个实体?
\n有一个开放的反馈助理报告 - FB11598200 指出已识别出一个潜在的修复.. 这很好.. 但我停止了开发,等待添加回图形编辑器功能,以便可以将关系添加到核心数据模型。
\n我尝试过使用核心数据实体编辑器的关系部分.. 一切看起来都不错.. 但实际的关系显然必须首先使用图形编辑器创建才能真正使其工作,如文档中所述。
\n要在实体之间的核心数据中添加关系,\xe2\x80\x98graph 编辑器样式\xe2\x80\x99 用于从一个实体拖动到另一个实体。Xcode 14.0 中缺少 \xe2\x80\x98Editor Style\xe2\x80\x99 开关。该开关位于数据模型工具的右下角。
\n该开关在文档文章 \xe2\x80\x98核心数据 > 建模数据 > 配置关系\xe2\x80\x99 中的 \xe2\x80\x98Add 关系\xe2\x80\x99 部分中进行了描述和显示。
\n要进行演示,请尝试会话 10119 \xe2\x80\x98 中使用的示例 WWDC22 应用程序优化对 Core Data 和 Cloud Kit\xe2\x80\x99 的使用。单击 Xcode 左侧工具栏中的数据模型。数据工具打开。开关不见了。无法添加新关系...
\n我尝试了 Xcode 当前测试版 (Xcode 14.0.3),并尝试从备份迁移回最新的 Xcode 13.4.1。从备份恢复的应用程序无法在 macOS 12.6 中启动
\n等待 Xcode 14.1 期间的解决方法的想法???
\n我想将Date对象发布并检索到UserDefaults.standard。到目前为止,我使用发布日期对象,UserDefaults.standard.set(firstDate, forKey: "Date")并使用先前声明为Date对象的inDate = UserDefaults.standard.object(forKey: "Date")where 检索它inDate。
但是,当我执行此操作时,会得到一个错误
Cannot assign value of type 'Date' to type 'Any',如果我尝试强制转换为as!Date类型,则程序将崩溃,并且如果我有条件地执行操作(as?),inDate则该操作将为nil。任何帮助是极大的赞赏。
class User: Object {
dynamic var name = ""
let tasks = List<Task>()
}
let realm = try! Realm()
let predicate = NSPredicate(format: "tasks != nil")
users = realm.objects(User).filter(predicate)
Run Code Online (Sandbox Code Playgroud)
我需要获取保存到数据库中的所有用户,这些用户已保存任务.就像谓词所暗示的那样,每个用户必须有任务,如果用户不提取任务.显然,我提供的谓词不起作用,并且始终与消息"包含数组属性的键路径必须使用聚合操作"崩溃.无论如何,我怎么能做这个工作?
ios ×9
core-data ×5
swift ×3
cloudkit ×2
iphone ×2
objective-c ×2
xcode ×2
audio ×1
avfoundation ×1
date ×1
firebase ×1
macos ×1
nsnumber ×1
nspredicate ×1
realm ×1
swift3 ×1
uitableview ×1
userdefaults ×1